RealmSwift:查询相同泛型类型的所有对象
RealmSwift: Query all objects of same generic type
我有一个通用函数可以将对象保存到我的领域存储中。应该删除不在该列表中的 Realm 中的现有对象。我如何通用地获取相同类型的所有现有对象?
这是我目前的做法:
private func determineOrphans(remoteObjects: [Object])->[Object]?{
guard let remoteObject = remoteObjects.first else {
return nil
}
guard let localObjects = try? queryObjects(with: type(of: remoteObject) ) else{
return nil
}
let allLocalObjectsSet = Set(localObjects.toArray())
let objectsToDelete = Array(allLocalObjectsSet.subtracting(remoteObjects))
logger.info("These \(objectsToDelete.count) objects should be deleted: \(objectsToDelete)")
return objectsToDelete
}
private func queryObjects<T: Object>(with type: T.Type) throws -> Results<T> {
return try Realm().objects(T.self)
}
这是我获取领域对象的通用函数。
import RealmSwift
func queryObjects<T: Object>(with type: T.Type) throws -> Results<T> {
let realm = try Realm()
return realm.objects(T.self)
}
如果您需要一个模型数组作为 Realm returns 具有延迟加载对象的自有类型结果的用法示例:
do {
let objects = try queryObjects(with: Model.self).map { [=11=] }
} catch {
print("Can not get Model: \(error)")
}
}
Update这里完全是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([=12=]) }
logger.info("These \(objectsToDelete.count) objects should be deleted: \(objectsToDelete)")
return objectsToDelete.map { [=12=] }
}
我有一个通用函数可以将对象保存到我的领域存储中。应该删除不在该列表中的 Realm 中的现有对象。我如何通用地获取相同类型的所有现有对象?
这是我目前的做法:
private func determineOrphans(remoteObjects: [Object])->[Object]?{
guard let remoteObject = remoteObjects.first else {
return nil
}
guard let localObjects = try? queryObjects(with: type(of: remoteObject) ) else{
return nil
}
let allLocalObjectsSet = Set(localObjects.toArray())
let objectsToDelete = Array(allLocalObjectsSet.subtracting(remoteObjects))
logger.info("These \(objectsToDelete.count) objects should be deleted: \(objectsToDelete)")
return objectsToDelete
}
private func queryObjects<T: Object>(with type: T.Type) throws -> Results<T> {
return try Realm().objects(T.self)
}
这是我获取领域对象的通用函数。
import RealmSwift
func queryObjects<T: Object>(with type: T.Type) throws -> Results<T> {
let realm = try Realm()
return realm.objects(T.self)
}
如果您需要一个模型数组作为 Realm returns 具有延迟加载对象的自有类型结果的用法示例:
do {
let objects = try queryObjects(with: Model.self).map { [=11=] }
} catch {
print("Can not get Model: \(error)")
}
}
Update这里完全是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([=12=]) }
logger.info("These \(objectsToDelete.count) objects should be deleted: \(objectsToDelete)")
return objectsToDelete.map { [=12=] }
}