Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 自定义错误处理程序未按预期返回错误_Ios_Swift - Fatal编程技术网

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

Ios 自定义错误处理程序未按预期返回错误,ios,swift,Ios,Swift,我们有一组自定义服务器消息,我们会根据设备的语言进行更改。 函数正在返回 错误域=Proyect.ErrorHandler.DatabaseErrors代码=11 null,而不是 错误域=我们的网页代码=11我们在Localizable.strings中拥有的文本 我们像ErrorHandler.checkErrorCodecustomCode一样调用此函数,以将我们在completionHandler中的自定义代码作为错误发送,比如completionHandlernil,ErrorHand

我们有一组自定义服务器消息,我们会根据设备的语言进行更改。 函数正在返回

错误域=Proyect.ErrorHandler.DatabaseErrors代码=11 null,而不是

错误域=我们的网页代码=11我们在Localizable.strings中拥有的文本

我们像ErrorHandler.checkErrorCodecustomCode一样调用此函数,以将我们在completionHandler中的自定义代码作为错误发送,比如completionHandlernil,ErrorHandler.checkErrorCodecustomCode作为NSError

我尝试将.foundationError添加到案例中,但我得到的表达式类型在没有更多上下文的情况下是不明确的。我遵循了这一点,您的代码具有史诗般的抗干性

首先,您确实需要重构它:

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行,现在您可以添加任何您想要的案例,而不会产生任何歧义。

您的代码是史诗般的耐干性

首先,您确实需要重构它:

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行,现在您可以添加任何您想要的案例,而不存在任何歧义。

当我打印error.domain时,它仍然显示Proyect.ErrorHandler.DatabaseErrors而不是我们的网页,它仍然没有说明或用户信息好的,我的坏,问题是,当我打印error.domain时,它仍然显示Proyect.ErrorHandler.DatabaseErrors而不是我们的网页,它仍然没有说明或用户信息好吧,我的错,问题是我再次将它转换为NSError