2015-11-06 60 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