我是Realm的新手。我正在创建我的模型,其基类继承自Object,以及此基类的自定义子类。我的模型要求基类通过覆盖静态ignoredProperties()
方法声明一些属性被忽略。当试图在某些基类子类上覆盖该方法时,我得到一个Swift编译器错误,指出 Class方法会覆盖'final'类方法。我的基类实现没有标记为final
。我不知道这是否是Realm的当前限制,但我似乎无法找到任何对此问题的引用。
我的代码如下所示:
class Base: Object {
// properties declarations
override static func ignoredProperties() -> [String] {
return ["someProperty"]
}
}
class SomeModel: Base {
// properties declarations
// compiler error here
override static func ignoredProperties() -> [String] {
var ignoredProperties = super.ignoredProperties()
ignoredProperties.append("someOtherProperty")
return ignoredProperties
}
}
有任何想法或建议吗?我目前正在使用CocoaPods的最新Realm,当前的Xcode(7.2.1)和最新的Swift。
答案 0 :(得分:6)
您已将ignoredProperties
声明为:
override static func ignoredProperties() -> [String]
应该是:
override class func ignoredProperties() -> [String]
子类不能覆盖 static
个函数。 class
函数可以。
答案 1 :(得分:0)
接受的答案对我没有用,但是从父类中删除了覆盖,并在子代的{{1}实现中添加了要忽略的字段}。