2016-11-10 27 views
3

我剛剛繼承了一個包含Apple's ResearchKit(RK)的iOS項目。升級到Swfit 3:無法覆蓋已標記爲不可用的'init'

我已經升級到RK的最新版本,也適用於Swift 3.雖然我曾在iOS和RK工作過,但我仍然不是很有信心。無論如何,有一個叫SurveyTask的類,它實現了RK的ORKOrderedTask

enter image description here

cannot override 'init' which has been marked unavailable

末這一功能,已定義stepz,我們有:

super.init(identifier: "survey", steps: stepz) 

我查了ORKOrderedTask類的定義,它有一個init功能。

enter image description here

我一直在閱讀有關initializers,但沒有發現任何東西。在SurveyTaskinit之前使用overrideconvenience不會改變任何內容。同樣的錯誤。任何幫助將不勝感激。

XCode版本8.1。

+0

了'ORKOrderedTask'似乎的初始化需要一個標識符,爲什麼不要試圖使用正常的'init(標識符:字符串,步驟:[QRKStep]?)' – LoVo

+0

事情是我不認爲'init()'的目的是覆蓋另一個。它只是在「SurveyTask」被實例化時運行。用'super'調用提供了這些參數。 –

+0

嘗試將標記初始化爲'open',而不是'public' –

回答

2

這裏是你如何模仿一個無參數初始化,避免錯誤unavailable

class MyClass: ParentWithUnavailableInitializer { 
    init(workaround _: Void =()) { 
     // Call a designated initializer 
     super.init(param: "a very sensible value") 
    } 
} 

// At a call site 
let obj = MyClass() 

作品在雨燕3.2和斯威夫特4.