可以说我有一个Dog
和Person
领域对象,例如
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@property RLMArray<Person> *owners;
@end
@implementation Dog
@end
RLM_ARRAY_TYPE(Dog)
@interface Person : RLMObject
@property NSString *name;
@property RLMArray<Dog> *dogs;
@end
@implementation Person
@end
RLM_ARRAY_TYPE(Person)
这是Realm示例项目中的示例代码。唯一的区别是,Dog
实体具有的阵列Person
对象作为owners
,换言之的反比关系来Person
的dogs
。
现在,我要完成的事情是查询Dog
具有aPerson
作为之一的对象owners
。
我怎样才能做到这一点?
您只需要做[Dog objectsWhere:@"ANY owners = %@", person]
,person
要查询的所有者在哪里。
一个完整的例子:
@protocol Person;
@interface Dog : RLMObject
@property NSString *name;
@property NSInteger age;
@property RLMArray<Person> *owners;
@end
@implementation Dog
@end
RLM_ARRAY_TYPE(Dog)
@interface Person : RLMObject
@property NSString *name;
@property RLMArray<Dog> *dogs;
@end
@implementation Person
@end
RLM_ARRAY_TYPE(Person)
void test() {
RLMRealm *realm = RLMRealm.defaultRealm;
[realm beginWriteTransaction];
Person *person = [Person createInRealm:realm withObject:@{@"name": @"Tim"}];
Dog *dog = [Dog createInRealm:realm withObject:@{@"name": @"Rover", @"age": @5, @"owners": @[person]}];
[Dog createInRealm:realm withObject:@{@"name": @"Rex", @"age": @10, @"owners": @[]}];
[realm commitWriteTransaction];
RLMArray *dogs = [Dog objectsWhere:@"ANY owners = %@", person];
assert(dogs.count == 1);
assert([dog isEqual:dogs[0]]);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句