相关疑难解决方法(0)

swift - 我可以从自定义init方法调用struct default memberwise init吗?

如果我创建一个没有的swift结构init,那么我可以调用编译器生成的默认成员初始化器,如下所示:

struct OrderFill {
    let price:Int
    let qty: Int
    let timeStamp: NSDate
}
let o = OrderFill(price: 2, qty: 1, timeStamp: someDate)
Run Code Online (Sandbox Code Playgroud)

我想要做的是创建一个方便的init方法来从字典反序列化,然后字典链接到默认的成员init.就像是

struct OrderFill {
    let price:Int
    let qty: Int
    let timeStamp: NSDate

    init(dict:[String:AnyObject]) throws {
        self.init(
            price: dict["price"] as! Int
            qty: dict["qty"] as! Int
            timeStamp: try parseDate(dict["ts"] as! String)
    }
}
let o = OrderFill(someDict)
Run Code Online (Sandbox Code Playgroud)

当我尝试编写这段代码时,编译器(Xcode 7.2)在调用中给出了错误"额外参数'数量',好像它没有看到默认的成员并试图递归调用 init(dictionary)

我可以编写自己的成员init,或者我可以直接从我的分配属性init(dictionary),但如果我可以链接调用它会很好.有没有办法在swift中做到这一点?

swift swift-structs

33
推荐指数
2
解决办法
8623
查看次数

标签 统计

swift ×1

swift-structs ×1