获取包含参数的 Realm 对象

Posted

技术标签:

【中文标题】获取包含参数的 Realm 对象【英文标题】:Fetch Realm objects that contain parameter 【发布时间】:2016-11-10 21:50:40 【问题描述】:

我有一个领域数据库,其中填充了具有 url 参数的 Restaurant 对象。我想获取 url 包含用户在UITextField 中键入的内容的对象。

NSPredicate *pred = [NSPredicate predicateWithFormat:@"url CONTAINS '%@'", self.searchQuery];
RLMResults<Database *> *results = [Database objectsWithPredicate:pred];

if ([results count] == 0) 
    NSLog(@"results count == 0");
    return nil;

现在,当我运行它时,我总是得到 0 个结果。尽管我有两个示例条目具有“http://www.testingthis.com”作为 url,并且搜索查询是“testingthis”。关于为什么我没有得到结果的任何想法?

【问题讨论】:

【参考方案1】:

您需要针对Restaurant 类本身执行搜索查询;不是Database。 Realm 使用您指定的类来确定在哪个表中应用查询。

顺便说一句,您还可以将NSPredicate 查询与+[RLMObject objectsWhere:] 内联,因此无需创建单独的NSPredicate 对象(除非您有特定原因)。 :)

RLMResults *restaurants = [Restaurant objectsWhere:@"url CONTAINS '%@'", @"testingthis"];

如果您尝试查询不在默认领域中的Restaurant 对象,那么您也可以使用+[RLMObject objectsInRealm: where:] 来显式控制您要查询的数据库。

【讨论】:

抱歉,不清楚这一点。 “数据库”是实际存储“餐厅”的类的名称。 (我知道,遗留问题,我只是在更新一些不属于我的东西。)无论如何,问题是我没有为 Realm 设置正确的 fileURL。不过感谢您的帮助!

以上是关于获取包含参数的 Realm 对象的主要内容,如果未能解决你的问题,请参考以下文章

NSPredicate 使用 RLMResults 作为参数

如何从包含其他参数的响应中获取 JSON 对象列表

用于获取对象的谓词,其参数包含在特定的 NSSet 中

Realm (Swift):如何在迁移期间获取 MutableSet 数据?

无法从Swift中的Realm对象Server获取数据

使用 Realm 进行 Swift XCTest UI 测试