我正在使用带有nsfetchedresultscontroller的coredata数据的tableview。当视图加载时,我使用
创建一个新实体SomeManagedObject *someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeManagedObject" inManagedObjectContext:self.managedObjectContext];
这样新的实体就出现在我的tableview中。现在我希望这个实体只是临时的,但是当我在tableview中编辑一些对象并保存managedObjectContext时,临时实体也会被保存,我不希望这样。
他们是一种只保存一个对象的方法而不是de managedObjectContext中的所有内容吗?
他们是否可以通过其他方式为我的tableview制作一个临时对象。
非常欢迎任何帮助。 谢谢 吨
答案 0 :(得分:2)
使用alloc init创建新的NSManagedObject,并传递nil而不是NSManagedObjectContext。然后,如果您以后决定要将该对象设为永久对象,则设置它的上下文。但是,这不允许您在NSFetchedResultsController中看到它,因为它不会与上下文相关联。
如果你能解释你的最终目标是什么,可以提供更好的答案。
答案 1 :(得分:0)
不,在managedObjectContext中,保存是全部或全部。我不知道的是,如果将托管对象的持久存储设置为nil
会发生什么- (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store
如果随后保存了managedObjectContext,则不应保存此对象。这只是一个猜测,但告诉我它是否有效; - )
答案 2 :(得分:0)
对于临时托管对象,使用第二个托管对象上下文(MOC)创建它们。完成后,只需释放MOC而不执行保存。
查看CoreDataBooks中的添加书籍代码,该代码使用相同的方法在用户取消时丢弃新添加的对象。