iOS从RLMLinkingObjects执行子查询

时间:2017-01-12 05:51:59

标签: ios realm

这是我的附件模型。

@interface Attachment : RLMObject
@property BOOL isOfflineAvailable;
@property BOOL isStarred;

在我的类别中,我设置了链接到附件。

@property (readonly) RLMLinkingObjects *relatedAttachments;

+ (NSDictionary *)linkingObjectsProperties {
    return @{
             @"relatedAttachments": [RLMPropertyDescriptor descriptorWithClass:Attachment.class propertyName:@"category"],
             };
}

然后,我试图查询relatedAttachments并仅在isOfflineAvailable为true时才进行查询。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY relatedAttachments.isOfflineAvailable == YES"];

self.categories = [[Category objectsWithPredicate:pred] sortedResultsUsingProperty:@"id" ascending:YES];

问题是它是空的(虽然有数据)。我该怎么办?如果它不是链接对象而只是RLMArray,那没关系。

1 个答案:

答案 0 :(得分:1)

RLMLinkingObjects表示一个集合,就像一个数组,而不是一个对象。因此,尝试直接在relatedAttachments上调用谓词将不起作用,因为作为数组,它不会具有isOfflineAvailable属性。

相反,您可以使用SUBQUERY的{​​{1}}语法来查询符合该条件的NSPredicate内的任何对象:

relatedAttachments