在Object子类及其自己的子类

时间:2016-02-25 05:02:07

标签: swift realm

我是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。

2 个答案:

答案 0 :(得分:6)

您已将ignoredProperties声明为:

override static func ignoredProperties() -> [String]

应该是:

override class func ignoredProperties() -> [String]
子类不能覆盖

static个函数。 class函数可以。

答案 1 :(得分:0)

接受的答案对我没有用,但是从父类中删除了覆盖,并在子代的{{1}实现中添加了要忽略的字段}。