2017-03-23 18 views
0

私はSWIFT 3.0のために約束キットを使用していますが、私はそうは[[EVObject]?]型の値を変換できません期待引数の型に[_]

response.result.value 

と私の非同期ネットワーク呼び出しを満たすためにしようとしています私のViewController機能でそれを使用することができます。

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

これは私のネットワーク層である:

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!) 
         } 
        }) 
      } 
    } 

私は、私は次のエラーを取得するプロジェクトビルドしてみてください。

enter image description here

私が仕事で、今は数時間のために立ち往生していると私はそれが働いて得ることはありませんが。追加情報については、私に尋ねるのをためらってください!

答えて

0

私は、完了ハンドラ内の "応答" を与えるとそれを固定:

response: DataResponse<[T]> 

ベスト、 ケビンを。

0

私は問題がこの行にあると思いますか?あなたは配列を渡すことになっているかのように見えますが、あなたは:)だから、配列の配列を渡している、私はresponse.result.valueが既に配列であるかもしれないと思われるエラーに基づいて

fullFill([response.result.value]) 

。そうであるかどうかを確認してください。表示されている場合は、行を次のように変更してください。

fullFill(response.result.value) 
+0

解決方法はあなたの答えです!完成ハンドラータイプでした。 –

関連する問題