2014-02-14 53 views
1

我有一个关于用核心数据创建数据库的问题。 在我的应用程序在第一次启动时,我应该解析一些json以获取一些数据插入核心数据分贝。 我的JSON文件结构以这样的方式(我只显示我的JSON的元素)IOS:存储一个数组和对象嵌套的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”,在我的核心数据库中设置它的方式是什么? 你能帮我吗? 谢谢

回答

0

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

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

  • 如果你只想当你看到了一个实例(也就是,你或许显示该数据,但不定义搜索它),你可以存储在一个NSArray字符串有可用的数据。在核心数据模型编辑器中将属性转换为,并且核心数据将读取/写入完整数组。

  • 如果你需要查找基于id_loc值数据(例如:发现每一个对象,其中id_loc包含l3),最好的方法是创建另一个实体持有的id_loc值,并成立了一对多与新实体的关系。

+0

是的,你是对的,id_loc是重要的,因为我用它作为你的第二个例子...然后我应该为id_loc创建一个新实体,但是怎么做? id_loc可以包含可变数量的元素,以及如何设置这个新实体?多少属性? – CrazyDev

+0

您将创建一个具有** single **属性的'id_loc',它是一个字符串。然后,您的主实体将具有多对多关系,因此它可以与它所需的那些单个属性对象中的许多关联。你最终得到一个对象的'NSSet',每个对象对应一个'id_loc'字符串。 –

+0

我创建了一个名为'Id_loc'的具有单个属性的实体,作为一个字符串;我为主要实体创建了多对多关系。现在我生成了主身份和id_loc的类;现在在主要身份类中,我看到了两种方法:' - (void)addLocObject:(Id_loc *)value; - (void)addLoc:(NSSet *)values;'我应该只使用第二个?所以我把我的id_loc数组插入它很容易。或者我应该使用'addLocObject'?但在这第二种情况下,我应该做一个发出循环,它不是直接... – CrazyDev