2

我使用 nsfetchedresultscontroller 使用带有 coredata 数据的 tableview。当视图加载时,我使用创建一个新实体

SomeManagedObject *someManagedObject = [NSEntityDescription insertNewObjectForEntityForName:@"SomeManagedObject" inManagedObjectContext:self.managedObjectContext];

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

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

他们是否有其他方式为我的 tableview 制作临时对象。

任何帮助都会非常受欢迎。谢谢吨

4

3 回答 3

2

使用 alloc init 创建新的 NSManagedObject 并传递 nil 而不是 NSManagedObjectContext。然后,如果您以后决定希望该对象是永久的,则将其设置为上下文。但是,这将不允许您在 NSFetchedResultsController 中看到它,因为它不会与上下文相关联。

如果您可以解释您的最终目标是什么,则可以提供更好的答案。

于 2010-08-07T23:51:59.363 回答
0

对于临时托管对象,使用第二个托管对象上下文 (MOC) 创建它们。完成后,只需释放 MOC 而无需执行保存。

查看CoreDataBooks中的添加书籍代码,它使用相同的方法在用户取消时丢弃新添加的对象。

于 2010-08-06T20:08:55.073 回答
0

不,在 managedObjectContext 中保存是全有或全无。我不知道如果将托管对象的持久存储设置为 nil 会发生什么

- (void)assignObject:(id)object toPersistentStore:(NSPersistentStore *)store

如果您随后保存 managedObjectContext,则不应保存此对象。这只是一个猜测,但请告诉我它是否有效;-)

于 2010-06-27T21:10:08.123 回答