NSPredicate在NSSet中查找具有属性的对象

时间:2013-11-11 11:43:03

标签: ios core-data nspredicate nsset

我的NSMangedObject包含其他NSSet的{​​{1}}。

我需要检查这些对象是否在NSManagedObjects中有值,然后返回它们。

我使用MagicalRecord获取数据。

所以我需要这样的东西:

NSSet

因此,如果NSSet stringObjects包含我正在寻找的字符串,那么返回我请求的对象。

这里有一个注释:stringObjects(例如,它代表我的NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stringObjects contains %@", string]; )它是NSSet,它包含NSManagedObjects,所以我需要通过一些id(例如string_id属性)来搜索它们。 / p>

那么模型看起来像这样

NSSet

只是为了更好地理解关系。

但问题是如何创建谓词来检查NSSet是否包含所需的id。

1 个答案:

答案 0 :(得分:16)

如果我理解你的问题,stringObjects是一种多对多的关系 从一个实体 A 到另一个实体 B ,而 B 具有一个属性string_id

要查找与给定string id的任何 B 对象相关的所有 A 对象,请使用:

NSString *stringId = …; // The string that you are looking for
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY stringObjects.string_id == %@", stringId];