我制作了一个名为Synchronizable
的协议,并且我的某些Realm
对象符合该协议。
如 :
class Comment : Object, Synchronizable {
// ...
}
我想查询所有本地
Realm
对象,并检索符合该协议的所有对象。所以我做了类似的事情:
func getObjectsToSynchronize() -> [Object]{
Array(realm.objects(Object.self)).filter({
if let $0 = $0 as? Synchronizable {
return true
}
return false
})
}
使用
Object
类型的Realm Object
,但是默认情况下,此类型对象不实现我的协议,因此我无法检测到该对象是否符合协议Synchronizable
,它说:Expression pattern of type 'Object' cannot match values of type 'Synchronizable?'
有没有办法做到这一点 ?我认为通过
Realm object
查询的方式是错误的。错误的方法?
也许我必须创建另一个名为
Realm
的SynchronizableObject
类对象,该对象继承自Object
领域类。此类将与我希望可同步的Realm对象建立关系,例如:
class SynchronizableObject : Object {
// MARK: - Realm Relationships
dynamic var synchronizables : List<Object>()
}
然后我应该用
Realm
对象查询此类 最佳答案
@AnthonyR您无法直接查询/过滤RealmSwift.Object
,必须在完成后从RealmSwift.Object
继承模型
class Comment : Object, Synchronizable {
// ...
}
然后,您可以查询/过滤所有继承类型的对象:
func getObjectsToSynchronize() -> Results<Comment> {
return realm.objects(Comment.self)
}
如果您再说明一点,您想做什么可能是我可以帮助您