2016-02-25 65 views
3

我是Realm的新手。我使用從Object繼承的基類和此基類的自定義子類創建我的模型。我的模型要求基類通過覆蓋靜態ignoredProperties()方法聲明一些屬性爲忽略。當試圖在某些基類子類上覆蓋該方法時,我得到一個Swift編譯器錯誤,指出類方法會覆蓋「最終」類方法。我沒有將我的基類實現標記爲final。我不知道這是否是目前Realm的限制,但我似乎無法找到對此問題的任何參考。在Object子類和它自己的子類上實現ignoredProperties()

我的代碼如下所示:

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

該文檔使您遠離模型繼承,並推薦使用對象組合。 「Base」的用途是什麼? – Michael

+0

你好@Michael,我使用'Base'主要是爲我所有的模型類定義一些共同的屬性。 – boliva

回答

6

您已經聲明ignoredProperties爲:

override static func ignoredProperties() -> [String] 

它應該是:

override class func ignoredProperties() -> [String] 

static功能不能被子類覆蓋。 class功能可以。

+0

這就是它。謝謝@bdash。 – boliva

0

接受的答案對我來說不起作用,但是在子類的實現ignoredProperties()中,從父類中刪除覆蓋並添加了您想忽略的父類的字段。

相關問題