Вот моя общая функция для выборки объектов области.
import RealmSwift
func queryObjects<T: Object>(with type: T.Type) throws -> Results<T> {
let realm = try Realm()
return realm.objects(T.self)
}
Пример использования, если вам нужен массив моделей, поскольку Realm возвращает собственный тип. Результаты с лениво загруженными объектами:
do {
let objects = try queryObjects(with: Model.self).map { $0 }
} catch {
print("Can not get Model: \(error)")
}
}
Обновление здесь совершенно общая функция determineOrphans
:
private func determineOrphans<T: Object>(remoteObjects: [T]) -> [T] {
guard let localObjects = try? queryObjects(with: T.self ) else {
return []
}
let objectsToDelete = localObjects.filter { !remoteObjects.contains($0) }
logger.info("These \(objectsToDelete.count) objects should be deleted: \(objectsToDelete)")
return objectsToDelete.map { $0 }
}