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

swift – 我可以从自定义init方法调用struct default memberwise init吗?,第1张

概述如果我创建一个没有init的swift结构,那么我可以调用编译器生成的默认成员初始化器,如下所示: struct OrderFill { let price:Int let qty: Int let timeStamp: NSDate}let o = OrderFill(price: 2, qty: 1, timeStamp: someDate) 我想要做的是创建一个方 如果我创建一个没有init的swift结构,那么我可以调用编译器生成的默认成员初始化器,如下所示:
struct OrderFill {    let price:Int    let qty: Int    let timeStamp: NSDate}let o = OrderFill(price: 2,qty: 1,timeStamp: someDate)

我想要做的是创建一个方便的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)

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

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

添加自己的初始化程序作为结构的扩展。扩展无法删除现有功能,因此它将保留struct的默认初始值设定项。
struct OrderFill {    let price: Int    let qty: Int    let timeStamp: NSDate}extension OrderFill {    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)
总结

以上是内存溢出为你收集整理的swift – 我可以从自定义init方法调用struct default memberwise init吗?全部内容,希望文章能够帮你解决swift – 我可以从自定义init方法调用struct default memberwise init吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1051958.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存