HIHO,
我有一个关于查询领域数据库的问题。我有包含RLMArray中的功能的realm对象。我想找到包含给定数组中所有特征的所有对象。 在另一种情况下,我想找到所有具有一个特征的对象。
我尝试这样的事情(也用IN):
NSArray *featureArray = @[@"feature1", @"feature2"];
RLMResults* containedObjects = [MyObject objectsWhere:@"features CONTAINS %@", featureArray];
但是会收到如下错误:RLMArray predicates must use aggregate operations
我认为问题是,该领域必须检查具有数组的数组以进行匹配。在SQL中我认为JOIN-Operation是一种很好的(不是非常高效)的方式,但是我在NSPredicate中找不到相同的操作。
感谢您的每一个提示!
答案 0 :(得分:1)
由于你无法在Realm中存储值数组,我想MyObject
在这种情况下会有类Feature
的多对多关系/列表属性,这可能是由他们name
确定。
CONTAINS
与NSPredicate不同,而不是您在这里寻找的内容。这是string comparison operator。
您可以使用IN
运算符,如下所示:
NSArray *featureArray = @[@"feature1", @"feature2"];
RLMResults* containedObjects = [MyObject objectsWhere:@"features.name IN %@", featureArray];
注意:您不必担心性能,因为链接是Realm中的一等公民,这里没有涉及昂贵的JOIN操作。