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

时间:2017-08-25 12:45:10

标签: swift class

我有一个这样的课程:

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)方法中收到错误(“从初始化程序返回而不初始化所有存储的属性”)。据我所知,设置初始值非常重要,我做了什么。

1 个答案:

答案 0 :(得分:2)

在你init(sound: String)中,你没有为图像分配任何值。 由于此属性是强制性的,因此不是可选的。

您有两个选项,使属性可选:

var image: UIImage? = nil

或者为其指定一个新的图像对象:

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