Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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 Alamofire的自定义、基于内容的验证器(Swift)_Ios_Iphone_Swift_Alamofire - Fatal编程技术网

Ios Alamofire的自定义、基于内容的验证器(Swift)

Ios Alamofire的自定义、基于内容的验证器(Swift),ios,iphone,swift,alamofire,Ios,Iphone,Swift,Alamofire,我知道您可以添加状态代码和内容类型验证器,但我真的希望能够基于结果内容编写自己的验证器-基本上我希望确保返回的json包含一些字段,并且它们的值有效 我正在开发的应用程序目前的设计方式是,有一个服务器类处理所有api调用,响应对象返回给调用它的人,这样他们就可以进行逻辑/更新ui,等等 现在我在所有请求上都有一个状态码验证器,所以我不需要在所有外部都有它,但我有几个API,它们需要定制的验证逻辑,这意味着我必须在所有调用它的地方添加它,而且我不能使用这种惊人的语法: switch resp.re

我知道您可以添加状态代码和内容类型验证器,但我真的希望能够基于结果内容编写自己的验证器-基本上我希望确保返回的json包含一些字段,并且它们的值有效

我正在开发的应用程序目前的设计方式是,有一个服务器类处理所有api调用,响应对象返回给调用它的人,这样他们就可以进行逻辑/更新ui,等等

现在我在所有请求上都有一个状态码验证器,所以我不需要在所有外部都有它,但我有几个API,它们需要定制的验证逻辑,这意味着我必须在所有调用它的地方添加它,而且我不能使用这种惊人的语法:

switch resp.result {
    case .Success(let value):
        print("yay")
    case .Failure:
        print("nay")
}

我想要任何能帮助我找到解决方案的答案/指针,

提前非常感谢大家!:)

我最终遇到了完全相同的问题,并发现您想要做的是编写自己的响应序列化程序并停止使用.validate()

我使用的序列化程序非常非常接近现成的JSONResponseSerializer,只是我检查了一个错误

我对股票序列化程序所做的唯一更改是在do catch语句中:

do {
    let JSON = try NSJSONSerialization.JSONObjectWithData(validData, options: options)
    if let responseDict = JSON as? NSDictionary, apiError = NSError.APIErrorFromResponse(responseDict) {
        return .Failure(apiError)
    }
    return .Success(JSON)
} catch {
    return .Failure(error as NSError)
}
apierromfromresponse
只是
NSError
上的一个扩展方法,用于检查JSON中的错误字典,并从中填充自定义的
NSError


如果您还没有找到解决方案,希望这会为您指明正确的方向

在哪里可以找到现成的JSONResponseSerializer的源代码,以便查看完整的实现?在该文件上查找//标记:-JSON,您将看到Alamofire的默认JSON序列化。我的几乎是完全一样的,除了你在这里看到的变化。在扩展请求之后,还需要扩展DataRequest以定义一个方法来使用新的序列化函数,就像它们对JSON序列化所做的一样。