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