我的错误是这样写的:
public enum ParseError: LocalizedError {
case badURL(_ urlString: String)
public var errorDescription: String? {
switch self {
case .badURL:
return String.invalidURL
}
}
}
因为我只有一种情况,所以我不关心在我的调用代码中创建多个模式:
do {
let url = try urlString.constructURL()
UIApplication.shared.open(url)
} catch {
Alert().showError(error.errorDescription, subTitle: urlString) // trying to get the associated value here
}
我想做这样的事情:
catch let error = error as ParseError(let urlString)
但显然,这是不可能的。如何获取枚举本身的值及其在语句中的关联值?
最佳答案
我唯一能想到的方法是在错误类型中添加一个urlString
属性,
extension ParseError {
var urlString: String? {
switch self {
case .badURL(let x): return x
}
}
}
然后像这样捕获错误:
do {
let url = try urlString.constructURL()
UIApplication.shared.open(url)
} catch let error as ParseError {
Alert().showError(error.errorDescription, subTitle: error.urlString)
}
关于swift - 使用错误枚举的关联值和计算属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57517177/