【问题标题】:Swift : How to avoid duplicate entries in CoreData for implementation with JSON array?Swift:如何避免 CoreData 中的重复条目以使用 JSON 数组实现?
【发布时间】:2016-05-20 14:33:29
【问题描述】:

我正在用 Swift 开发一个应用程序,它从 API 获取 JSON 记录,将其转换为 NSArray 并在 UITableView 中重新加载。 我需要将 NSArray 与 CoreData 映射,并且在向 API 发出新请求时,如果在 JSON 响应中添加了新子项,则我必须仅将那个子项存储在 CoreData 中。 IE。我必须避免在 CoreData 中重复 NSArray 的值。

我发现很少有解决方案是“对数据模型使用唯一约束”和“HyperSync 和 DATAStack”,但我无法这样做。我是否必须实现一个模块来检查所有记录?

【问题讨论】:

    标签: ios json swift uitableview core-data


    【解决方案1】:

    如果您在 JSON 中的对象有一些标识,例如[ { "id" : 4, ...} ...],那么您应该将这些“id”值存储在您的 CoreData 对象中,并在创建新对象之前尝试在映射期间获取已经存在的值。

    如果 JSON 对象中没有标识或唯一字段,则您的任务无法解决。

    例如RestKit 框架会自动为您完成所有这些工作,您只需配置映射和identificationAttributes

    【讨论】:

    • 我想在不安装任何 Pod 的情况下这样做。正如您提到的,我只需要获取现有的,我该怎么做。你能给我推荐任何关于 RESTKit 的好教程吗?谢谢。
    • RestKit 是 Pod,这里提供了基本示例:github.com/RestKit/RestKit
    • 如果你想自己做,并且你有JSON对象的唯一标识,那么你可以把这个属性存储在你的ManagedObject的一些“externalId”属性中。然后,在创建新对象之前,通过条件“externalId = %@”、objectJson[@“id”] 获取现有对象。如果没有现有对象 - 然后创建新对象,否则更新现有对象。
    猜你喜欢
    • 2019-05-24
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 2023-03-22
    • 2013-10-20
    • 2014-02-27
    • 2014-06-17
    相关资源
    最近更新 更多