2017-02-13 25 views
0

Я пытаюсь фильтровать объекты из базы данных Realm. У меня есть атрибут itemIdForDateOrder который является строка (выглядит примерно так: 11e6-eef3-09306910-baa7-417b3207abf6) и у меня нет никаких проблем с сортировкой по этому признаку:Realm - объекты фильтра больше, чем атрибут строки

realm.objects(ItemInfo.self).sorted(byKeyPath: "itemIdForDateOrder", ascending: false) 

Проблема заключается в том, что я пытаюсь фильтровать объекты по этому признаку, и я хочу, чтобы получить объекты, которые имеют этот параметр больше.

Часть моего предиката:

if let item = newerThan { 
    formatString += " AND itemIdForDateOrder > '" + item.itemIdForDateOrder + "'" 
} 

Но когда я использовал его, я получаю исключение:

, истекающее приложение из-за неперехваченное исключением «Недопустимого типа оператора», причины: «Оператор»> 'not supported for string type'

Но сравнение работает для типов строк, когда я могу использовать свой атрибут с сортировкой. Так есть способ, каким образом я могу также фильтровать этот атрибут? Или я должен получить все объекты, а затем отфильтровать их (не по предикативному фильтру). Спасибо

ответ

0

Как говорит ошибка, механизм запросов Realm в настоящее время не поддерживает фильтрацию свойств строки с использованием неравенств. Я бы предложил filing an enhancement request against Realm с просьбой добавить такую ​​поддержку, а затем выполнить фильтрацию вне Realm (т. Е. Собрать объекты в массив и затем фильтровать массив).

+0

Спасибо за anwer. Я создал решение с фильтрацией вне Realm. Просто интересно, есть ли способ с Королевством. Пока нет, я заполняю запрос расширения. –