swift convenience初始化程序错误:必须在参数

时间:2016-12-08 14:17:42

标签: swift

我一直在尝试创建我的第一个便利初始化程序。我收到了这个错误:

我收到错误:参数'valueInDollars'必须在参数'serialNumber'之前

这是我的所有代码,我的问题在我的代码底部,但我认为显示所有内容很有用。

import UIKit

class Item: NSObject {

var name: String
var valueInDollars: Int
var serialNumber: String?
let dateCreated: NSDate



init(name: String, valueInDollars: Int, serialNumber: String?) {

self.name = name
    self.valueInDollars = valueInDollars
self.serialNumber = serialNumber
    self.dateCreated = NSDate()

    super.init()

}

//create a random item:

convenience init(random: Bool = false) {

    if random {

    let adjectives = ["Fluffy", "Rusty", "Bluffy"]
        let nouns = ["Boon", "Noon", "Toon",]

    var idx = arc4random_uniform(UInt32(adjectives.count))
    let randomAdjective = adjectives[Int(idx)]

        idx = arc4random_uniform(UInt32(nouns.count))
        let randomNoun = nouns[Int(idx)]


        let randomName = "\(randomAdjective) \(randomNoun)"

        let randomValue = Int(arc4random_uniform(100))

        let randomSerialNumber = NSUUID().UUIDString.componentsSeparatedByString("-").first!


        self.init(name: randomName, serialNumber: randomSerialNumber, valueInDollars: randomValue)
    }
    else {

        self.init(name: "", serialNumber: nil, valueInDollars: 0)



    }
}
}

2 个答案:

答案 0 :(得分:2)

您应该使用在定义init本身时使用的相同的params顺序来调用init

self.init(name: "", valueInDollars: 0, serialNumber: nil)

答案 1 :(得分:0)

解决方案:我需要以正确的顺序调用我的init,因此它与我的变量相对应。