2017-04-19 69 views
1

我试图根据作为项目存储在主对象上的RLMArray中的对象的标识符对Realm对象集合进行搜索操作。就像这两种型号:基于RLMArray项目属性查找对象

// 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,如何查询数据库以获取所有者?

回答

1

我一直在寻找这个答案的“直接”方法。我没有想到数据库的反向关系。我们只需要创建的子对象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