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