我试图根据在主对象上的RLMArray中存储为项目的对象的标识符,对Realm对象的集合进行搜索操作。就像这两个模型一样:
// Person model
@interface Person : RLMObject
@property int personID;
@property NSString *name;
@property RLMArray<Dog *><Dog> *dogs;
@end
// Dog model
@interface Dog : RLMObject
@property int dogID;
@property NSString *name;
@property int age; // Some other random properties
@end
所以,正如你所看到的,我们每个人都拥有RLMArray
个狗的财产。
查询:给定dogID
,如何查询数据库以获取所有者?
答案 0 :(得分:2)
我正在为这个答案寻找一个“直接”的方法。我没有想过数据库的反向关系。我们只需要在子对象上创建一个RLMLinkingObjects
属性:
@interface Dog : RLMObject
@property int dogID;
@property NSString *name;
@property int age; // Some other random properties
@property (readonly) RLMLinkingObjects *owners;
@end
@implementation Dog
+ (NSDictionary *)linkingObjectsProperties {
return @{
@"owners": [RLMPropertyDescriptor descriptorWithClass:Person.class propertyName:@"dogs"],
};
}
@end
从这一点开始,您只需查询Dog
的ID,然后查找owners
属性以获取所有者(如果它只是一个所有者,则它是一个元素的数组。)
详细信息在文档中:https://realm.io/docs/objc/latest/#inverse-relationships