我发现这个指南可以接收HTTP Body,其中包含使用AFNetworking 2格式化为JSON的错误消息。该指南是用Objective-C编写的,而我正在尽力将其转换为Swift。
这是我试图转换为Swift的代码:
更具体地说,问题出在这部分:
我该如何将这行代码转换成Swift? 由于我对Swift/Objective-C语言比较新,因此可能有一个简单的解决方案,但我还没有找到它。
这是我试图转换为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语言比较新,因此可能有一个简单的解决方案,但我还没有找到它。
'NSErrorPointer' does not have a member named 'userInfo'
。这是否与Swift转换相关还是我的代码中存在错误? - Michael Sørensenerror
是一个双重指针,因此您需要解引用两次才能访问实例。即*(*error).userInfo
。 - giorashc*
来访问它们。在这种情况下,*(*error).userInfo
将不起作用。编译器会报错:'*' is not a prefix unary operator
。 - Michael Sørensen