NSPredicate在NSSet中查找带有属性的对象
我有一个NSMangedObject
包含其他NSManagedObjects
NSSet
。
我需要检查这些对象是否在NSSet
有一个值,然后返回它们。
我使用MagicalRecord来获取数据。
所以我需要这样的东西:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"stringObjects contains %@", string];
所以,如果NSSet stringObjects包含一些我正在查找的string,然后返回我请求的对象。
这里的一个注意:stringObjects(名称只是例如它代表我的NSSet
)它是NSSet
包含NSManagedObjects,所以我需要通过一些id(例如string_id属性)来search它们。
那么模型看起来像这样
NSSet *set = MainObject.stringObjects; NSString *string_id_for_first_object = [[[set allObjects] objectAtIndex:0] string_id];
只是为了更好地理解关系。
但问题是如何创build谓词来检查NSSet是否包含所需的id。
如果我正确理解你的问题, 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];