我发现这个
guide收到一个HTTP Body,女巫包含一个带有AFNetworking 2的JSON格式错误信息.该指南是在Objective-C中,我正在尽我所能将其转换为Swift.
这是我试图转换为Swift的代码:
- (id)responSEObjectForResponse:(NSURLResponse *)response data:(NSData *)data error:(NSError *__autoreleasing *)error { if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { if (*error != nil) { NSMutableDictionary *userInfo = [(*error).userInfo mutablecopy]; NSError *jsonError; // parse to json id json = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingallowFragments error:&jsonError]; // store the value in userInfo if JSON has no error if (jsonError == nil) userInfo[JSONResponseSerializerWithDataKey] = json; NSError *newError = [NSError errorWithDomain:(*error).domain code:(*error).code userInfo:userInfo]; (*error) = newError; } return (nil); } return ([super responSEObjectForResponse:response data:data error:error]); }
更具体的是,这部分存在问题:
NSMutableDictionary *userInfo = [(*error).userInfo mutablecopy];
这是我目前的代码:
class JSONResponseSerializerWithData: AFJSONResponseSerializer { let JSONResponseSerializerWithDataKey: Nsstring = "JSONResponseSerializerWithDataKey" override func responSEObjectForResponse(response: NSURLResponse!,data: NSData!,error: NSErrorPointer) -> AnyObject? { if(!self.validateResponse(response as NSHTTPURLResponse,data: data,error: error)) { if(error != nil) { // The question..... var jsonError: NSError // parse to json // Missing some returns with AnyObejct... } return nil } } }
如何将此行转换为Swift?
我对Swift / Objective-C语言很新,所以可能有一个简单的解决方案,但我还没有找到它.
解决方法
我找到了描述如何在AFNetworking 2中解析错误消息的相同指南,这是我在Swift中的实现:
override func responSEObjectForResponse(response: NSURLResponse!,error: NSErrorPointer) -> AnyObject! { if !self.validateResponse(response as! NSHTTPURLResponse,error: error) { if error != nil { var userInfo = error.memory!.userInfo! var jsonError:NSError? let json: AnyObject? = NSJSONSerialization.JSONObjectWithData(data!,options: NSJSONReadingOptions.AllowFragments,error: &jsonError) userInfo[JSONResponseSerializerWithDataKey] = json; error.memory = NSError(domain: error.memory!.domain,code: error.memory!.code,userInfo: userInfo) } return nil } return super.responSEObjectForResponse(response,error: error) }
希望这会对某人有所帮助.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。