问题:什么是处理仅将某些对象保存到coredata中的磁盘上的数据束的最佳方法?
这是应用程序/问题:
该应用程序将为用户提供在互联网上搜索不同项目的可能性。
搜索将返回将显示给用户的许多对象。
用户应该可以随时收藏这些对象中的任何一个。应优先使用的对象应连接到当前登录的用户,并在应用程序退出后继续存在。
该应用程序将以iOS6为基础。
我一直在使用这些资源
我目前正在使用3种上下文来研究父/子方法:主,主和限制上下文类型。
当前可能的解决方案:
因此,用户可以进行一次搜索,该搜索将返回100个对象(在后台上下文中导入并保存到主上下文中)。
用户喜欢这些对象中的2个(在主上下文中)。该对象将被添加到用户并设置为“应该保存”。 (在保存时,对象将被推送到主上下文)
当我保存mastercontext时,我不想将所有100个对象保存到磁盘。只是用户喜欢的两个对象。
因此,我想考虑删除在我对mastercontext进行保存之前不应保存到磁盘的对象。
- (void) mainContextHasSaved: (NSNotification *) notification {
NSLog(@"Lets save the master");
[_masterManagedObjectContext performBlock:^{
//Loop through all inserted object and check if they should be saved to disk
[self removeObjectThatShouldNotBeSavedToDisk];
NSError *error = nil;
BOOL saveSuccess = [_masterManagedObjectContext save:&error];
if(saveSuccess) {
//Do something
}
}];
}
但是据我了解,当在父级上下文中执行保存时,所有更改都将传播到子级。然后,我将松开除已存储的两个对象之外的所有对象。
那么有人知道如何解决这种问题吗?在上面的示例中我可以做些什么吗?还是应该创建多个persistentStores并在上下文之间移动对象?
感谢所有愿意提供帮助的人,如果需要更多信息,请询问:)
最佳答案
在一个类似的项目中,我使用了该解决方案,该解决方案也受到用户的青睐:
在下载的项目中保留时间戳记属性,并在时间戳记超过特定阈值且未将其标记为收藏夹时将其删除。
关于ios - 使用父/子方法和临时对象实现CoreData,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991287/