如何不保留从NSManagedObjectContext检索到的NSManagedObjects

时间:2010-04-20 16:40:13

标签: iphone core-data nsmanagedobject nsmanagedobjectcontext

我为每个新节点解析一个包含书籍的xml文件:

Book *book = (Book*)[NSEntityDescription insertNewObjectForEntityForName:@"Book" inManagedObjectContext:managedObjectContext];

要获取我的核心数据簿实体的NSManagedObject,我接着用数据填充托管Book对象,将其添加到数组中,冲洗,重复。

完成后,我会向用户显示图书清单。 我还没有执行保存:

NSError *error;
if (![managedObjectContext save:&error]) {
    NSLog(@"%@", [error domain]);
}

用户现在选择其中一本书,我想坚持这本书,但只有这本书,所有其他书籍对我来说都不感兴趣了。 图书实体没有/或是任何关系的一部分。它只是一个“单一”实体。

如果我拉“保存杆”,每个Book对象都会被保留,我将不得不删除除了我想要的所有内容之外的所有内容。

我如何应对这一挑战,我似乎无法在核心数据编程指南中找到特定的用例,这也有点让我感到烦恼,我是否反对这里的最佳做法?

感谢您给予的任何帮助。

1 个答案:

答案 0 :(得分:1)

是的,你反对最佳做法。在该用例中,如果您确实不想保存对象,请将它们保留为中间格式,并仅为要保留的对象创建Core Data对象。然而,这似乎是错误的。

保存其他书籍有什么危害?唯一会被用过一次吗?

根据您提供的少量信息,您需要重新考虑解决问题的方法。

更新

从上下文中删除未保存的对象有一个非常小的开销是,所以这是给定参数的最佳解决方案。我问其他问题,看看是否有一个更清洁的整体解决方案而不是构建对象只是为了扔掉它们。听起来你已经走过那条路了。