Я пытаюсь отфильтровать большую базу данных объектов с массивами строк, в данном случае, kids
.
class Thing: Object, Decodable {
@objc dynamic var id: String?
let kids = List<String>
}
Поскольку Realm не поддерживает запрос примитивных данных в массивах (согласно Царство, ты еще не можешь использовать предикат и фильтр, чтобы сделать это), я использую это, чтобы отфильтровать их:
let things = realm.objects(Thing.self)
for thing in things {
if thing.kids.contains("Momo") {
// Success
}
}
Я также пробовал:
realm.objects(Thing.self).filter(NSPredicate("%@ IN kids", "Momo"))
Но это не работает. Я также пытался использовать SUBQUERY
внутри предиката, но он также не работает для примитивных типов данных.
Поскольку у меня есть тысячи Thing
объектов, это очень медленно и приводит к зависанию моего приложения. Есть ли способ ускорить это или заставить его не заморозить мое приложение, по крайней мере? Я не могу создать новый пользовательский класс для строк, потому что мне пришлось бы полностью изменить свой JSON, где все хранится.