class Ppl{
var residence:Residence?
}
class Residence{
var addr="Default place"
}
var ppl=Ppl()
ppl.residence!=Residence()
// I put a unexpected exclamation mark after residence
// until now it should return no error but if I put below line
var someaddr=ppl.residence?.addr
错误:执行被中断,原因:EXC_BAD_INSTRCTION(代码= EXC_1386_INVOP,子代码= 0x0)。
答案 0 :(得分:1)
只需将ppl.residence!=Residence()
替换为ppl.residence = Residence()
。
答案 1 :(得分:0)
变量ppl
的实例为Ppl
,因为您已使用此var ppl=Ppl()
创建了一个实例。但是在Ppl
的实现中,您已将residence
声明为可选变量而不创建实例。因此,当您访问ppl.residence!
(带有感叹号)标记时,首先会打开可选项。即使在为其分配Residence
的实例之前,这也会为您提供零值。只需用ppl.residence = Residence()
替换该行,它就可以正常工作。