[英]How do I initialize an immutable Swift property to a computed value ?
当我有这个初始化器时:
let channels : [TVChannel]
required init?(json : NSObject)
{
if let x = json as? [NSObject]
{
self.channels = x.map { TVChannel(json:$0)! }
}
}
编译器给我错误:
错误:初始化之前使用的(12,14)常量'self.channels'
为什么是这样 ? 以及如何初始化我的TVChannel
映射数组的TVChannel
?
当控制流未输入if let
条件时,编译器需要知道如何初始化self.channels
。
一个解决方案可能是提供else分支:
if let x = json as? [NSObject] {
self.channels = x.map { TVChannel(json:$0)! }
} else {
self.channels = []
}
您需要处理json
是和不是NSObjects数组的两种情况。 或者,您可以为属性定义默认值并将其设置为var
例如
required init?(json : NSObject) {
if let x = json as? [NSObject] {
channels = x.map { TVChannel(json: $0) }
} else {
channels = [ ]
}
}
要么
var channels: [TVChannel] = [ ]
要么
var channels = [TVChannel]()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.