gpt4 book ai didi

ios - 在 Swift 中处理初始化失败

转载 作者:行者123 更新时间:2023-11-28 08:50:21 24 4
gpt4 key购买 nike

我有一个自定义类,我想使用 JSONCodable https://github.com/matthewcheok/JSONCodable 从 JSON 对象对其进行初始化

所以我有

public var id: String    
public var name: String?
public var imageURL: NSURL?

和一个符合 JSONCodable 协议(protocol)的可失败初始化器

required public init?(JSONDictionary: JSONObject) {
let decoder = JSONDecoder(object: JSONDictionary)
do {
id = try decoder.decode("id")
name = try decoder.decode("name")
if let imageURLString: String = try decoder.decode("image") {
imageURL = NSURL(string: imageURLString)
}
}
catch let error as NSError{
NSLog("\(error.localizedDescription)")
return nil
}
}

我在“Return nil”语句中遇到编译器错误:在从初始化程序返回 nil 之前,必须初始化类实例的所有存储属性。除了设置虚拟值之外,有没有办法解决这个问题?我想包含的属性之一是只读的,我真的不想创建一个 setter 来绕过编译器。我使用的是类,而不是 JSONCodable 示例代码中的结构,因为我想子类化。一种可能性是有一个非失败的初始化器,它会抛出一个错误,但这不符合 JSONCodable 协议(protocol)。我是 Swift 的新手,非常欢迎任何有关如何处理此问题的指示。

最佳答案

借助此答案修复:Best practice to implement a failable initializer in Swift (此处提到https://github.com/matthewcheok/JSONCodable/issues/5)

所以现在我有

 public var id: String!

id 现在被隐式解包,所以它的默认值为 nil。

关于ios - 在 Swift 中处理初始化失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34413250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com