Получение отдельных строк из таблицы Realm в iOS

Я использую базу данных Realm для приложения iOS, где у меня есть вариант использования, в котором я хочу отфильтровать набор результатов по различным значениям для определенного поля. Это поле не является первичным ключом таблицы областей.

Я не смог построить запрос для этого.

Пример запроса:

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

FileRLMObject является подклассом RLMObject из библиотеки областей.

здесь таблица содержит один столбец с именем colB. При получении результатов allFiles я хочу получить строки, которые имеют разные значения colB.

Любые предложения, как я могу этого добиться?


person Rajeev    schedule 30.10.2015    source источник


Ответы (1)


Realm пока не поддерживает отдельные запросы. Вы можете подписаться на 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];
 }
person marius    schedule 30.10.2015
comment
Похоже, что вы получаете все данные и ищете отдельные элементы... нельзя ли фильтровать, не перебирая все строки? - person Rajeev; 30.10.2015
comment
Не сейчас. В настоящее время мы работаем над этим, но я пока не могу назвать ожидаемое время прибытия. - person marius; 30.10.2015