2017-07-21 3 views
0

Ich konvertiere meinen Swift2 Code zu Swift3.Swift3: AFNetworking Probleme Umwandlung Fehler Block von Swift2 nach Swift3

-Code in Swift2

manager.post(url, parameters: dict, 
 
     success: { (operation: AFHTTPRequestOperation?, responseObject: Any?) in 
 
      self.removeActivityIndicator()      
 
      
 
      if let jsonDict = self.parseJSON(responseObject) { 
 
       callback(jsonDict) 
 
      } 
 
     }, 
 
     failure: { (operation: AFHTTPRequestOperation!, error: NSError!) in 
 
      self.removeActivityIndicator() 
 
      
 
      print("Error: " + error.localizedDescription) 
 
      var dict = error.userInfo 
 
      dict["error"] = error.localizedDescription 
 
      if let jsonDict = dict as? Dictionary<String, AnyObject> { 
 
       callback(jsonDict) 
 
      } 
 
     } 
 
)

In Failure Abschnitt habe ich die folgende Fehlermeldung,

Cannot convert value of type '(AFHTTPRequestOperation!, NSError!) ->()' to expected argument type '((AFHTTPRequestOperation?, Error?) -> Void)!' 

Wenn ich konvertieren failure: { (operation: AFHTTPRequestOperation!, error: NSError!)-failure: { (operation, error)

Ich habe und Fehler auf der Leitung

var dict = error.userInfo 

als 'Wert vom Typ Fehler hat kein Mitglied Userinfo'

+2

Erstens: Haben Sie AFNetworking aktualisiert? Gibt es einen Grund, warum Sie nicht Alamofire (die gleiche Familie von Frameworks von Gruppenautoren) bevorzugen, die Swift ist? Haben Sie versucht, die Autovervollständigung ihre Arbeit machen zu lassen? Die Signatur in Swift 3 für diesen Block hat sich geändert, was der Fehler sagt. – Larme

Antwort

1

. . Verwenden Sie Alamofire, wie von Larme empfohlen oder erkunden Sie einen anderen Dienst. Alamofire ist dasselbe wie AFNetworking und sehr flexibel. Sie werden mit einer kleinen Änderung in Ihrem Code integrieren. AFNetworking wird von Swift3,4 nicht sehr unterstützt.