gpt4 book ai didi

cocoa - RestKit 2.0 删除 RKManagedObjectStore 但保留 NSManagedObjectModel

转载 作者:行者123 更新时间:2023-12-03 17:39:55 26 4
gpt4 key购买 nike

我设置了一个项目,其中来自服务器的所有数据都使用托管模型写入核心数据托管存储。我使用 mogenerator 从核心数据模型生成了所有实体。我已将所有 RestKit 映射集成到我的实体中。

NSError *error = nil;
NSURL *modelURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"dataModel" ofType:@"momd"]];

// NOTE: Due to an iOS 5 bug, the managed object model returned is immutable.
NSManagedObjectModel *managedObjectModel = [[[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL] mutableCopy];
RKManagedObjectStore *managedObjectStore = [[RKManagedObjectStore alloc] initWithManagedObjectModel:managedObjectModel];

// Initialize the Core Data stack
[managedObjectStore createPersistentStoreCoordinator];

NSPersistentStore __unused *persistentStore = [managedObjectStore addInMemoryPersistentStore:&error];
NSAssert(persistentStore, @"Failed to add persistent store: %@", error);

[managedObjectStore createManagedObjectContexts];

// Set the default store shared instance
[RKManagedObjectStore setDefaultStore:managedObjectStore];

现在由于时间限制,计划发生了变化。根本不应该存储数据。数据应该从服务器读取并直接显示。没有节约,就没有坚持。因此,我想删除 RKManagedObjectStore,保留实体和映射,并在请求成功或 RKPaginator 结果时从“RKMappingResult *mappingResult”读取数据。使用 RKManagedObjectStore 和 RKPaginator 的示例:

[objectManager addResponseDescriptor:[RKResponseDescriptor responseDescriptorWithMapping:[Friend entityMapping:objectManager.managedObjectStore]
method:RKRequestMethodAny
pathPattern:nil
keyPath:@"items"
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)]];

[objectManager setPaginationMapping:[self paginationMapping]];
self.paginator = [objectManager paginatorWithPathPattern:@"data"];
self.paginator.perPage = 20;

//Set completion block for this paginator
[self.paginator setCompletionBlockWithSuccess:^(RKPaginator *paginator, NSArray *objects, NSUInteger page) {

[weakSelf.dataArray addObjectsFromArray:objects];
} failure:^(RKPaginator *paginator, NSError *error) {

}];

但是,当我开始删除 RKManagedObjectStore 时,我开始在映射时遇到问题。

'You must provide a managedObjectStore. Invoke mappingForClass:inManagedObjectStore: instead.'

Q.1 我可以在没有 RKManagedObjectStore 的情况下使用 Enitiy Mapping 吗?我的方向正确吗?

Q.2 我可以删除商店并保留模型吗?

在我过度参与并走向错误的方向之前,任何提示、帮助或示例都会很棒。谢谢阿尔

最佳答案

您应该对抗需求变化,并使用 Core Data 作为信息的临时缓存来帮助内存管理(这样您就可以上下滚动列表,而不必一直加载所有内容)。这应该不会花费更多的时间来实现......

  1. 不可以,如果没有 RKManagedObjectStore,您就无法使用 RKEntityMapping
  2. 您可以保留该模型,但无法使用它(需要与 MOC 关联创建托管对象)。

关于cocoa - RestKit 2.0 删除 RKManagedObjectStore 但保留 NSManagedObjectModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20629243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com