使用Realm搜索数组(iOS)

时间:2015-11-26 16:56:30

标签: ios nspredicate realm

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中找不到相同的操作。

感谢您的每一个提示!

1 个答案:

答案 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操作。