2015-11-06 28 views
0

需要初始化一個對象,但我的初始化器不合作。我到目前爲止,但我不知道如何將參數傳遞給我的對象初始值設定項。在Xcode調用中缺少參數'編碼器'的參數

init(coder aDecoder: NSCoder, caseImage: UIImage, inputName: String, inputDate: String) { 
    self.caseImage = caseImage 
    self.caseName.text = inputName 
    self.caseDate.text = inputDate 
    super.init(coder: aDecoder) 
} 

required init(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

初始化程序被調用這段代碼在另一個類:

func loadSampleData() { 
    let Photo1 = UIImage(named: "retino1")! 
    let case1 = TableCell(caseImage: Photo1, inputName: "John Smith", inputDate: "2015-10-18") //error 
    patientCaseArray = [case1] 
} 

回答

2

根據你貼什麼,你必須在你的初始化語句中的解碼器來傳遞。以下是您嘗試呼叫,因爲它不存在,這是無效的:

TableCell(UIImage, String, String) 

所以,你要麼需要來創建它:

init(caseImage: UIImage, inputName: String, inputDate: String) { 
    super.init(coder: NSCoder()) 
    self.caseImage = caseImage 
    self.caseName.text = inputName 
    self.caseDate.text = inputDate 

} 

或傳遞NSCoder():

let case1 = TableCell(coder:NSCoder(), caseImage: Photo1, inputName: "John Smith", inputDate: "2015-10-18") 
+0

我嘗試了兩種方法,第一次導致不同的錯誤。其他結果沒有變化。首先我得到:類型NSCoder不符合協議'NilLiteralConvertible'。 – user3357612

+0

是的,你不能從字面上製作NSCoders,你需要創建基於NSCoder的實際項目,我只是意識到我應該告訴你只要忽略參數並調用init()而不是init(解碼器) – Knight0fDragon