2

对于我去的每个新节点,我解析一个包含书籍的 xml 文件:

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

为了获得我的核心数据书实体的 NSManagedObject,然后我继续用数据填充托管书对象,将其添加到数组中,冲洗,重复。

完成后,我将书籍列表呈现给用户。我还没有执行保存:

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

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

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

我将如何解决这个挑战,我似乎真的无法在核心数据编程指南中找到那个特定的用例,这也让我有些烦恼,我是否违背了最佳实践?

感谢您提供的任何帮助。

4

1 回答 1

1

是的,你违背了最佳实践。在那个用例中,如果您真的不想保存对象,请将它们保持在中间格式,并且只为您想要持久化的对象创建一个 Core Data 对象。然而,这似乎是完全错误的。

保存其他书籍有什么害处?是唯一的将被使用一次吗?

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

更新

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

于 2010-04-20T17:50:06.233 回答