【问题标题】:IOS: store a json with array and object nestedIOS:存储嵌套数组和对象的json
【发布时间】:2014-02-14 16:50:25
【问题描述】:

我有一个关于使用核心数据创建数据库的问题。 在我的应用程序中,第一次启动时,我应该解析一些 json 以获取一些数据以插入到核心数据数据库中。 我的 json 文件的结构是这样的:(我只显示了我的 json 的一个元素)

[{"id":"s1",
"n":"Name hotel",
"id_loc":["l1","l2","l3","l4"],
"val":3,
"tel1":"12345678",
"tel2":"12345678",
"obj":
{"id":"o1",
"n":"Name",
"des":"description",
"flag":"red"}
}]

我知道我可以将其视为 coredata 中的一个实体,并将所有元素视为属性,这很清楚。 现在您可以看到在我的 json 中有一个数组“id_loc”和一个对象(或字典)“obj”。 在核心数据中,管理这两个元素的方法是什么? 我想“obj”可以作为一个新实体进行管理,而“id_loc”,在我的核心数据数据库中设置它的方法是什么? 你能帮助我吗? 谢谢

【问题讨论】:

    标签: ios database core-data nsarray nsdictionary


    【解决方案1】:

    对于obj,就像你建议的那样:创建一个新实体,并在两个实体之间建立关系。

    对于id_loc,这取决于您需要如何使用数据。

    • 如果您只想在查找实例时获得该数据(也就是说,您可能会显示该数据但不需要搜索它),您可以将字符串存储在 @987654323 @。在 Core Data 模型编辑器中使属性可转换,Core Data 将读取/写入完整的数组。

    • 如果您需要根据id_loc 值查找数据(例如:查找id_loc 包含l3 的每个对象),最好的方法是创建另一个实体来保存@987654327 的值@,并与该新实体建立一对多关系。

    【讨论】:

    • 是的,你是对的,id_loc 很重要,因为我用它作为你的第二个例子......那么我应该为 id_loc 创建一个新实体,但是如何? id_loc 可以包含可变数量的元素,我该如何设置这个新实体?有多少属性?
    • 您将创建一个具有 single 属性的id_loc,该属性是一个字符串。然后,您的主要实体将具有一对多关系,因此它可以根据需要与尽可能多的单属性对象相关联。您最终会得到一个 NSSet 的对象,每个对象对应一个 id_loc 字符串。
    • 我创建了一个名为“Id_loc”的新实体,具有单个属性,作为字符串;我为主要实体创建了一个多对多关系。现在我为主要身份和 id_loc 生成了类;现在在主要身份类中,我看到两个方法:'- (void)addLocObject:(Id_loc *)value; - (void)addLoc:(NSSet *)values;'我应该只使用第二个吗?因此,我将 id_loc 数组轻松插入其中。或者我应该使用'addLocObject'?但在第二种情况下,我应该做一个嵌套循环,它不是直接......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-29
    相关资源
    最近更新 更多