ios - 休息套件 : addSQLitePersistentStoreAtPath produce extra record

标签 ios objective-c core-data restkit restkit-0.20

我想使用 RestKit 中的 getObjectFromPath 方法从我的服务器获取数据。我的测试服务器只有 3 条记录。在调用 getObjectFromPath 之后,我将它们分配给 NSMutableArray 以显示在 UITableView 上。

我遵循了 RKMagicalRecord 配置并在本地设置了核心数据。

然而,每次我在模拟器中运行应用程序时,sqlite 数据库中的记录数就这样增长

执行次数 addSQLitePersistentStoreAtPath : sqlite 中的记录数

  • 第一次执行 addSQLitePersistentStoreAtPath : 0
  • 第二次执行 addSQLitePersistentStoreAtPath : 3
  • 第 3 次执行 addSQLitePersistentStoreAtPath : 6
  • 第 4 次执行 addSQLitePersistentStoreAtPath : 9

我从来没有使用过Magical Record的任何保存方法。当我四处搜索时,getObjectFromPath 方法将进行映射,然后调用 success 回调 block 。在映射过程中,它会自动保存核心数据。

但是我不明白为什么在执行addSQLitePersistentStoreAtPath之前没有保存。映射后如何禁用 RestKit 中的自动保存?

最佳答案

您无法禁用自动保存。如果您不希望将对象保存到核心数据存储中,请使用普通的 NSObject 子类。

也就是说,您应该使用 Core Data,而您可能缺少的是在映射上设置唯一标识符键 (identificationAttributes)。如果您没有来自服务器的唯一标识符信息,那么您应该添加它。请参阅this example使用 identificationAttributes 的实体映射。

调用 addSQLitePersistentStoreAtPath 会在第一次调用时创建存储,并在后续调用时加载它。因此,在调用它之前没有存储,因此无法向其中添加任何内容。

关于ios - 休息套件 : addSQLitePersistentStoreAtPath produce extra record,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22959266/

相关文章:

ios - 在 iOS map 中显示多个注释

ios - Twitter共享在iOS 7下是否中断? (附加示例项目。)

ios - 添加第二个 .plist 作为子 Pane

iphone - 核心图 iOS 反转 Y 轴

objective-c - 在 Core Data 中将 NSURL 存储为字符串

swift - 使用 NSPredicate 对 TableView 中的核心数据进行排序(Swift)

ios - 从 Swift 生成的 Objective-C header

ios - 在 iOS 应用程序中加载静态对象的最佳方式是什么?

ios - 如果 CoreData NSPersistentContainer 内容被修改,使用 KVO 触发一个 Action

c++ - 在 Obj-C 项目中嵌入 Prolog 引擎