我为对象City创建了这个类
class City: NSObject {
var _name:String = ""
var name:String {
get {
return _name
}
set (newVal) {
_name = newVal
}
}
}
然后,当我创建对象时,我将执行以下操作:
var city:City!
city.name = "London" //crash here
println("name city is\(city.name)");
当我用消息“致命错误:解开可选值时意外发现nil”设置名称时,它崩溃
这实际上不是答案(请参阅其他答案以获取解决方案,例如@Greg和@zelib的答案),而是尝试修复我在您的代码中看到的一些错误
无需创建计算+存储属性(除非您有理由这样做):
class City: NSObject {
var name: String = ""
}
如果您继承自NSObject
,则会自动失去所有快速功能-避免使用它(除非您有理由这么做)
class City {
var name: String = ""
}
您正在使用空字符串作为值的缺失-swift为此提供了可选选项
class City {
var name: String?
}
除了3.之外,没有名称的城市也没有多大意义,因此您可能希望每个实例都有一个名称。使用非可选属性和初始化程序:
class City {
var name: String
init(name: String) {
self.name = name
}
}
避免隐式展开的可选(除非您有这样做的理由):
var city: City
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句