在iOS中从Realm表获取不同的行

3
我正在为iOS应用程序使用Realm数据库,其中我有一个用例,我想按特定字段的不同值过滤结果集。该字段不是realm表的主键。
我无法构建这样的查询。
示例查询:
RLMResults *allFiles = [FileRLMObject objectsInRealm:realmObject where:@"colA == %@", @"test1"];

FileRLMObject是来自realm库RLMObject子类。

这里的表格只包含一个名为colB的列。在获取所有文件结果时,我想要获取具有不同colB值的行。

您有任何建议吗?我该如何实现?

1个回答

2

目前Realm还不支持distinct查询。您可以订阅issue #1103以跟踪进展。

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

 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];
 }

看起来需要获取所有数据并查找不同的元素...难道不能在不迭代所有行的情况下进行过滤吗? - Rajeev
1
目前还没有。我们正在处理这个问题,但我还不能确定一个预计完成时间。 - marius

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接