2016-07-06 5 views
2

Я создаю приложение iOS с помощью Swift. Я использую Realm как базу данных.Как построить объект запроса для Realm

В настоящее время я создаю функцию поиска для представления таблицы.

Это мой фильтр запрос

items = realm.objects(Book).filter(predicate).filter("state IN {'pending','activated','completed','closed'}") 

Я спасаю то, что говорится, что пользователь хочет фильтровать в другой модели под названием Filter.

Как я могу построить этот {'ожидающий', 'активированный', 'завершенный', 'закрытый'} из результата следующего запроса фильтра (название - это атрибут)? Что называется этим объектом?

realm.objects(Filter).filter("type = 'filter' AND activated = 'true'") 

ответ

3

Правая рука оператора IN может принимать заместительную заполнитель (%@), который может иметь NSArray (или другого перечислимого объекта), замещенный в

Предполагая, что ваша Filter модель выглядит примерно так.:

class Filter: Object { 
    dynamic var type: String = "" 
    dynamic var activated: bool = false 
    dynamic var state: String = "" 
} 

вы можете сделать что-то вроде следующего для построения запроса вы после:

let activeFilters = realm.objects(Filter).filter("type = 'filter' AND activated = 'true'") 
let activeStates = activeFilters.valueForKey("state") as! [String]! 

let items = realm.objects(Book).filter(predicate).filter("state IN %@", activeStates) 
+0

Работал отлично! –

Смежные вопросы