使用Realm(iOS)搜索阵列



Hiho,

我有一个关于查询领域数据库的问题。我有一个领域对象,它包含RLMArray中的功能。我想从给定数组中查找包含所有功能的所有对象。在另一种情况下,我想找到所有具有一个特征的对象。

我尝试这样的东西(也与IN):

  NSArray *featureArray = @[@"feature1", @"feature2"];
  RLMResults* containedObjects = [MyObject objectsWhere:@"features CONTAINS %@", featureArray];

但会出现以下错误:RLMArray predicates must use aggregate operations

我认为问题是,该领域必须检查一个数组与一个数组是否匹配。在SQL中,我认为JOIN操作是一种很好(不是很有效)的方法,但我在NSPredcate中找不到等效的操作。

谢谢你的每一个提示!

由于您不能在Realm中存储值的数组,我猜在这种情况下,MyObject将具有类Feature的一个对多关系/列表属性,该类可能由其name标识。

CONTAINS与NSPredcate有关,而不是您在此处查找的内容。这是一个字符串比较运算符。

您可以使用IN运算符,如下所示:

NSArray *featureArray = @[@"feature1", @"feature2"];
RLMResults* containedObjects = [MyObject objectsWhere:@"features.name IN %@", featureArray];

注意:您不必担心性能,因为链接在Realm中是一流的公民,这里不涉及昂贵的JOIN操作。

最新更新