Ich habe diese guide gefunden, um eine HTTP-Nachricht zu empfangen, die eine JSON-formatierte Fehlermeldung mit AFNetworking 2 enthält. Die Anleitung ist in Objective-C und ich versuche mein Bestes, um es in Swift umzuwandeln.Konvertieren von MutableCopy zu Swift
Hier ist der Code, den ich in Swift zu konvertieren bin versucht:
- (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]);
}
Speziellere es ist dieser Teil das Problem gibt es:
NSMutableDictionary *userInfo = [(*error).userInfo mutableCopy];
Dies ist meine aktuellen Code:
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
}
}
}
Wie konvertiere ich diese Zeile in Swift? Ich bin ziemlich neu in der Swift/Objective-C-Sprache, also könnte es eine einfache Lösung dafür geben, aber ich konnte sie noch nicht finden.
Und es funktioniert wie es sollte? –
Es funktioniert Michael, ich benutze es in meiner neuesten App. Versuch es selber. Lassen Sie mich wissen, wenn Sie irgendwelche Probleme damit haben ... – Borbea
Funktioniert hier auch! Du hast die Frage richtig beantwortet! : D –