gpt4 book ai didi

ios - Swift:从抛出初始化器调用可失败初始化器?

转载 作者:搜寻专家 更新时间:2023-11-01 05:52:34 25 4
gpt4 key购买 nike

我需要扩展具有可失败初始化器的 struct,并使用一个调用该可失败初始化器的抛出初始化器。而且我认为在 Swift 3.1 中没有优雅或清晰的方法来做到这一点。

像这样:

extension Product: JSONDecodable {

public enum Error: Swift.Error {
case unableToParseJSON
}

init(decodeFromJSON json: JSON) throws {
guard let jsonObject = json as? JSONObject else {
throw Error.unableToParseJSON
}

// Meta-code
self.init(dictionary: jsonObject) ?? throw Error.unableToParseJSON
}
}

有没有优雅干净的方法来做到这一点?

最佳答案

在写问题时找到了一种半干净的方法:

extension Product: JSONDecodable {

public enum Error: Swift.Error {
case unableToParseJSON
}

init(decodeFromJSON json: JSON) throws {
guard let jsonObject = json as? JSONObject,
let initialized = Self(dictionary: jsonObject)
else {
throw Error.unableToParseJSON
}

self = initialized
}
}

关于ios - Swift:从抛出初始化器调用可失败初始化器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43276450/

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