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];