ios - 使用 Realm 搜索数组 (iOS)

标签 ios nspredicate realm

你好,

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

我尝试这样的事情(也用 IN):

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

但得到如下错误:RLMArray predicates must use aggregate operations

我认为问题在于, Realm 必须检查一个数组与一个数组是否匹配。在 SQL 中,我认为 JOIN-Operation 是一种很好的(不是很有效)的方式,但我在 NSPredicate 中找不到等效的操作。

谢谢你的每一个提示!

最佳答案

由于您不能在 Realm 中存储值数组,我猜想在那种情况下 MyObject 将具有与类 Feature 的一对多关系/列表属性,可以通过它们的 name 来标识。

CONTAINS 与 NSPredicate 一起使用,而不是您在此处查找的内容。这是 string comparison operator .

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

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

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

关于ios - 使用 Realm 搜索数组 (iOS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943767/

相关文章:

ios - 动画完成 Action

android - Realm Android javassist.NotFoundException : io. realm.com_example_realmtest_data_SomethingRealmProxyInterface

ios - 解析推送通知和 iOS 8.2 的警报标题

ios - subview Controller 中的 deinit

iphone - 使用 iOS Developer Enterprise Program 进行 Beta 测试?

objective-c - 编写 NSPredicate 格式字符串来测试多个属性的更短方法?

ios - 以 NSDictionary 作为对象的嵌套数组上的 NSPredicate

iphone - NSPredicate 与 NSString : Which is better/faster for finding superstrings?

ios - 如何在运行时删除 Realm 中的所有对象

ios - Realm 错误(线程 1 : Fatal error: init(realm:schema:) has not been implemented)