我有一个这样的课程:
class Card: CustomStringConvertible {
// Init values
var id: UUID = UUID.init()
var shown: Bool = false
var image: UIImage
var sound: String = ""
init(image: UIImage) {
self.image = image
}
init(sound: String) {
self.sound = sound
}
init(card: Card) {
self.id = (card.id as NSUUID).copy() as! UUID
self.shown = card.shown
self.image = card.image.copy() as! UIImage
self.sound = card.sound
}
为什么我会在init(sound:String)方法中收到错误(“从初始化程序返回而不初始化所有存储的属性”)。据我所知,设置初始值非常重要,我做了什么。
答案 0 :(得分:2)
在你init(sound: String)
中,你没有为图像分配任何值。
由于此属性是强制性的,因此不是可选的。
您有两个选项,使属性可选:
var image: UIImage? = nil
或者为其指定一个新的图像对象:
init(sound: String) {
self.sound = sound
self.image = UIImage()
}