繁体   English   中英

初始化存储属性的正确方法? -Xcode 8.3.3 / Swift 3

[英]Correct way of initializing stored properties? - Xcode 8.3.3 / Swift 3

我有这样的课:

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)方法中出现错误(“不初始化所有存储的属性而从初始化返回”)。 据我了解,设置初始值很重要,这就是我所做的。

在您的init(sound: String)您没有为图像分配任何值。 由于此属性是必需的,而没有可选的。

您有两个选择,使属性为可选:

var image: UIImage? = nil

或为其分配一个新的图像对象:

init(sound: String) {
    self.sound = sound
    self.image = UIImage()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM