检测Realm对象是否符合特定协议

时间:2018-03-30 11:05:58

标签: swift realm

我制作了一个名为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的{​​{1}}类对象,该对象继承自SynchronizableObject领域类。

这个类与我想要同步的Realm对象有关系,例如:

Object

然后我应该使用class SynchronizableObject : Object { // MARK: - Realm Relationships dynamic var synchronizables : List<Object>() } 对象

查询此类

1 个答案:

答案 0 :(得分:0)

@AnthonyR您无法直接查询/过滤RealmSwift.Object,您必须从RealmSwift.Object继承您的模型

class Comment : Object, Synchronizable {
    // ...
}

然后,您可以查询/过滤继承类型的所有对象:

func getObjectsToSynchronize() -> Results<Comment> {
    return realm.objects(Comment.self)
}

如果您再解释一下,您可以做些什么,我可以帮助您