Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 保存某些NSManagedObject但不保存其他对象的方法?_Iphone_Objective C_Core Data - Fatal编程技术网

Iphone 保存某些NSManagedObject但不保存其他对象的方法?

Iphone 保存某些NSManagedObject但不保存其他对象的方法?,iphone,objective-c,core-data,Iphone,Objective C,Core Data,我正在开发一个核心数据iPhone应用程序,它将远程资源从web拉入NSManagedObjects,并将其保存在本地 我希望用户能够指定应该保存哪些对象。这意味着一些将被保存,但许多将被删除。但是,我可能希望在不同的时间保存和删除—我更希望立即保存指定的对象(以防应用程序崩溃),但仍然保留其他对象,因为它们挂在表视图中等等 我能想到的一种方法是有一个不同的持久存储——一个用于将被保存的东西,一个用于将不会被保存的东西;这样我可以随时保存“应该保存”存储。但是,我更愿意将相同类型的对象保留在同一

我正在开发一个核心数据iPhone应用程序,它将远程资源从web拉入NSManagedObjects,并将其保存在本地

我希望用户能够指定应该保存哪些对象。这意味着一些将被保存,但许多将被删除。但是,我可能希望在不同的时间保存和删除—我更希望立即保存指定的对象(以防应用程序崩溃),但仍然保留其他对象,因为它们挂在表视图中等等

我能想到的一种方法是有一个不同的持久存储——一个用于将被保存的东西,一个用于将不会被保存的东西;这样我可以随时保存“应该保存”存储。但是,我更愿意将相同类型的对象保留在同一个域中

另一种方法是在最后进行保存,即取消任何从崩溃中恢复的能力。但是在最后保存将允许我解析出任何没有指定为“应该保存”的对象

这正是我想要的——NSManagedObject类中的一个“shouldSave”方法,或者至少是一个我可以在选择对象时激发的save方法。但据我所知,两者都不存在


所以,如果有人有任何其他建议,请告诉我!非常感谢。

CoreData不是用于对象序列化的,它是一种对象图序列化。这是一个重要的区别。一旦有了NSManagedObject,它就与上下文关联,CoreData句柄在上下文级别保存,因为这是它保证任何类型的对象图一致性的唯一方法。换句话说,您不能保存单个对象,因为如果它们与其他对象有关系,您也需要保存这些对象,并且它会快速级联到整个图形中


你似乎很担心撞车事故的恢复。如果应用程序崩溃,用户重新启动,他们会希望看到的只是他们保存的项目,还是崩溃前屏幕上的所有内容?如果是前者,您应该在节省时间时删除它们,并将它们从用户视图中删除(带有一些动画),如果是后者,您应该提交所有内容,并可能在另一时间删除您不感兴趣的对象。

我想我的Rails背景只是希望核心数据成为“智能图”这可以级联保存相关对象,而不必保存所有其他内容:)在这种情况下,我考虑了您关于崩溃恢复的问题,这些问题非常有用。我认为我的最佳选择是在下载后保存所有内容,然后只在以后执行删除操作——例如当用户执行新搜索时,有效地清除上次搜索中的所有对象,以及在启动时进行一般清理。非常感谢您的投入!