область.объекты().фильтр не работает с результатов
Я попытался сделать запрос объектов из области, используя RealmSwift framefowk
с предикатами:
realm.objects(Train).filter("ANY route IN %@", realm.objects(Route))
Ошибка:
Невозможно вызвать 'filter' со списком аргументов типа ' (String, Результаты) '
Тот же код работал с Realm framework
, но не работает с RealmSwift framework
.
Что я делаю не так ?
3 ответа:
Проблема в том, что
Results.filter(_:...)
принимает аргументы типа(String, CVarArgType...)
, ноResults
не соответствуетCVarArgType
. Я только что создал выпуск GitHub#1995 чтобы отследить это. Исправление довольно простое, и я надеюсь, что скоро появится пиар, чтобы решить эту проблему.В то же время, вы можете преобразовать
Results
иList
аргументы вResults.filter(_:...)
вArray
, используяmap(_:_:)
примерно так:realm.objects(Train).filter("ANY route IN %@", map(realm.objects(Route)) { $0 })
Редактировать: пр #1996 делая
Results
соответствуетCVarArgType
теперь ожидает рассмотрения.
Результаты не рассматриваются как массив в вашем случае, вы можете сделать это просто с помощью этого куска кода. Вы пробовали сопоставить
realm.objects(Route)
, чтобы вернуть массив идентификатора и отфильтровать его с помощью чего-то вроде :ANY route.yourIdentifier IN %@
?
Я написал это расширение
extension Results { func map<U>(transform: (T) -> U) -> Results<U> { return Results<U>(Swift.map(self, transform)) } }
Но ошибка есть
'Results<U>' cannot be constructed because it has no accessible initializers
Может быть потому, что результаты не могут быть созданы непосредственно как документы области.