gpt4 book ai didi

ios - 自定义错误处理程序未按预期返回错误

转载 作者:行者123 更新时间:2023-12-01 18:36:00 25 4
gpt4 key购买 nike

我们有一组自定义服务器消息,我们会根据设备的语言对其进行更改。
该函数正在返回
(Error Domain=Proyect.ErrorHandler.DatabaseErrors Code=11 "(null)")代替
(Error Domain=ourwebpage Code=11 "Text we have in Localizable.strings")

class ErrorHandler {

public enum DatabaseErrors: Error {
case ok
case incorrectFormat
case userHasNoRights
case doesntExists
case authError
case serverError
case missingData
case alreadyRegistered
case loadError
case inactive
case updateRequired
case incorrectData
case databaseError

private var domain: String {
return "ourwebpage"
}

private var errorCode: Int {
switch self {
case .ok:
return 0
case .incorrectFormat:
return 1
case .userHasNoRights:
return 2
case .doesntExists:
return 3
case .authError:
return 4
case .serverError:
return 5
case .missingData:
return 6
case .alreadyRegistered:
return 7
case .loadError:
return 8
case .inactive:
return 9
case .updateRequired:
return 11
case .incorrectData:
return 12
case .databaseError:
return 13

}
}

var description: String {
switch self {
case .ok:
return NSLocalizedString("server_message_00", comment: "")
case .incorrectFormat:
return NSLocalizedString("server_message_01", comment: "")
case .userHasNoRights:
return NSLocalizedString("server_message_02", comment: "")
case .doesntExists:
return NSLocalizedString("server_message_03", comment: "")
case .authError:
return NSLocalizedString("server_message_04", comment: "")
case .serverError:
return NSLocalizedString("server_message_05", comment: "")
case .missingData:
return NSLocalizedString("server_message_06", comment: "")
case .alreadyRegistered:
return NSLocalizedString("server_message_07", comment: "")
case .loadError:
return NSLocalizedString("server_message_08", comment: "")
case .inactive:
return NSLocalizedString("server_message_09", comment: "")
case .updateRequired:
return NSLocalizedString("server_message_11", comment: "")
case .incorrectData:
return NSLocalizedString("server_message_12", comment: "")
case .databaseError:
return NSLocalizedString("server_message_13", comment: "")
}
}

var foundationError: NSError {
return NSError(domain: domain, code: errorCode, userInfo: [NSLocalizedDescriptionKey: description])
}
}

我们将其称为ErrorHandler.checkErrorCode(customCode)之类的函数,以将我们拥有的自定义代码作为 completionHandler(nil, ErrorHandler.checkErrorCode(customCode) as NSError)之类的完成处理器中的错误发送给我们
    static func checkErrorCode(_ errorCode: Int) -> DatabaseErrors{
switch errorCode {
case 0:
return .ok
case 1:
return .incorrectFormat
case 2:
return .userHasNoRights
case 3:
return .doesntExists
case 4:
return .authError
case 5:
return .serverError
case 6:
return .missingData
case 7:
return .alreadyRegistered
case 8:
return .loadError
case 9:
return .inactive
case 11:
return .updateRequired
case 12:
return .incorrectData
case 13:
return .databaseError
default:
return .ok
}
}

}

我尝试在案件中添加 .foundationError,但得到 Type of expression is ambiguous without more context。我跟随 this这个

最佳答案

您的代码具有史诗般的耐DRY !

首先,您确实需要对其进行重构:

class ErrorHandler {

public enum DatabaseErrors: Int, Error {
case ok
case incorrectFormat
case userHasNoRights
case doesNotExists
case authError
case serverError
case missingData
case alreadyRegistered
case loadError
case inactive
case updateRequired
case incorrectData
case databaseError

private var domain: String { "ourwebpage" }
private var errorCode: Int { rawValue }

var description: String { NSLocalizedString(String(format: "server_message_%.2d", errorCode), comment: "") }
var foundationError: NSError { NSError(domain: domain, code: errorCode, userInfo: [NSLocalizedDescriptionKey: description]) }
}
}

因此,现在静态函数将是:
static func checkErrorCode(_ errorCode: Int) -> DatabaseErrors { DatabaseErrors(rawValue: errorCode) ?? .ok }

而已! 124行代码减少到只有24行,现在您可以毫无疑问地添加任何需要的大小写。

关于ios - 自定义错误处理程序未按预期返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58984320/

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