从 iOS 中的领域 table 获取不同的行

Getting distinct rows from Realm table in iOS

我正在为 iOS 应用程序使用 Realm 数据库,其中我有一个用例,其中我想通过特定字段的不同值过滤结果集。该字段不是领域 table.

的主键

我无法为此构建查询。

示例查询:

RLMResults *allFiles = [FileRLMObject objectsInRealm:realmObject where:@"colA == %@", @"test1"];

FileRLMObjectRLMObject 的子类,来自 realm 库

此处 table 包含一列名称为 colB。在获取 allFiles 结果时,我想获取具有不同 colB 值的行。

有什么建议可以实现吗?

Realm 尚不支持不同的查询。您可以订阅 issue #1103 以跟踪这方面的进展。

作为解决方法,您可以先查询 colB 的所有值,然后查询每个值的 select 对象,如下所示:

 NSArray *values = [FileRLMObject.allObjects valueForKey:"type"];
 NSSet *distinctValues = [NSSet setWithArray:values];
 NSMutableArray *allFiles = [NSMutableArray new];
 for (NSString *colB in distinctValues) {
      // This takes the firstObject.
      // You might want to modify the sort order to make sure
      // you get a certain object in case that there may exist 
      // multiple objects per distinct value.
      FileRLMObject *object = [FileRLMObject objectsWhere:@"colB == ?", colB].firstObject;
      [allFiles appendObject:object];
 }