我有一个json,其中包含每个对象都有子对象的对象,例如
[
{
"id": 1,
"name": "obj1"
},
{
"id": 2,
"name": "obj2"
},
{
"id": 3,
"name": "obj3",
"child": {
"id": 2,
"name": "obj2"
}
},
{
"id": 4,
"name": "obj4",
"child": {
"id": 5,
"name": "obj5"
}
}
]
所以在核心数据中,我有实体MyObject,它与子(与自身,与一个)有关系,与父对象(对很多人)的关系
所以当我尝试通过谓词获取对象时
[NSPredicate predicateWithFormat:@"parent.@count = 0"]
我在[1,3,4]中只获得了带有id的对象,但没有id = 2(这里是错误)和id = 5(这里都是正确的),因为它是' s设置为父&# 39;当id = 3的对象保存到数据库时映射。
如果没有使用谓词我有5个对象,请包含obj5。
但我需要从coredata中获取完全从json获得的对象数。
我只需要在[1,2,3,4]中获取id为id的对象。
如果可能,我如何需要写谓词?
答案 0 :(得分:1)
从JSON获取的数据是所有对象的子集,但是根据其选择的逻辑不会保留在对象模型中。
你坚持孩子和父母之间的关系(提示:为了便于阅读,如果它是多人的话,将其重命名为parents
),但是你的JSON示例中的选择不是基于任何这些标准。
获取所有对象的一种简单方法是提取JSON提要提供的顶级ID并在谓词中使用它:
NSArray *ids = [jsonArray valueForKey:@"id"];
[NSPredicate predicateWithFormat:@"idNumber in %@", ids];
(请注意,我将您的属性名称从id
更改为idNumber
,以避免可能的语言怪癖,因为id
是保留字。)