2017-03-23 3 views
0

Ich verwende Versprechen Kit für die schnellen 3.0 und ich versuche, meinen asynchronen Netzanruf mit denWert kann nicht vom Typ umwandeln [[EVObject?]] Zu erwarten Argument Typ [_]

response.result.value 

So zu erfüllen I kann sie in meiner Viewcontroller-Funktion:

FeedbackServices.getFeedbackSubjects().then { (FeedbackSubject) -> Void in 
      print(FeedbackSubject.count) 
     }.catch { (error) in 
      print(error.localizedDescription) 
     } 

Das ist meine Netzwerkschicht:

protocol NetworkService 
{ 
    static func GET<T:EVObject>(URL: String, parameters: [String: AnyObject]?, headers: [String: String]?) -> Promise<T> 
    static func GET<T:EVObject>(URL: String, parameters: [String: AnyObject]?, headers: [String: String]?) -> Promise<[T]> 

} 

extension NetworkService 
{ 

    static func GET<T:EVObject>(URL: String, 
        parameters: [String: AnyObject]? = nil, 
        headers: [String: String]? = nil) -> Promise<[T]> 
    { 

     return Promise { fullFill, reject in 

      Alamofire.request(URL, 
           method: .get, 
           parameters: parameters, 
           encoding: URLEncoding.default, 
           headers: headers).responseArray(completionHandler: { response in 

         if (response.result.isSuccess) { 

          fullFill([response.result.value]) 

         }else{ 
          reject(response.result.error!) 
         } 
        }) 
      } 
    } 

Wenn ich versuche, das Projekt, das ich die folgende Fehlermeldung zu bauen:

enter image description here

ich stecken bin für ein paar Stunden jetzt bei der Arbeit und ich habe nicht daran zu arbeiten. Für weitere Informationen zögern Sie bitte nicht mich zu fragen.

Antwort

0

Ich reparierte es die "Antwort" in den Abschluss-Handler mit Angabe:

response: DataResponse<[T]> 

Best, Kevin.

0

Ich glaube, das Problem ist in dieser Zeile?

fullFill([response.result.value]) 

Basierend auf den Fehler sieht es aus, als ob Sie ein Array sollen passieren, aber Sie ein Array von Arrays :) sind vorbei Also, ich vermute, dass response.result.value bereits ein Array sein könnte. Überprüfen Sie, ob das der Fall ist. Wenn dies der Fall ist, ändern Sie die Zeile wie folgt:

fullFill(response.result.value) 
+0

Die Lösung steht über Ihrer Antwort! Es war der Completion-Handler-Typ. –

Verwandte Themen