tableview coredata临时对象

时间:2010-06-27 20:01:34

标签: iphone uitableview nsmanagedobject core-data

我正在使用带有nsfetchedresultscontroller的coredata数据的tableview。当视图加载时,我使用

创建一个新实体
SomeManagedObject *someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeManagedObject" inManagedObjectContext:self.managedObjectContext];

这样新的实体就出现在我的tableview中。现在我希望这个实体只是临时的,但是当我在tableview中编辑一些对象并保存managedObjectContext时,临时实体也会被保存,我不希望这样。

他们是一种只保存一个对象的方法而不是de managedObjectContext中的所有内容吗?

他们是否可以通过其他方式为我的tableview制作一个临时对象。

非常欢迎任何帮助。 谢谢 吨

3 个答案:

答案 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中的添加书籍代码,该代码使用相同的方法在用户取消时丢弃新添加的对象。