2016-09-14 2 views
6

私はこのエラーを受けています:"非機能型の値を呼び出すことはできません 'HTTPURLResponseの?'"(Alamofire 4.0)[スウィフト3.0]

セクションの

"Cannot call value of non-function type 'HTTPURLResponse?'"

.response { (request, response, data, error) 

誰かが私にこれを手伝うことができるかどうか疑問に思っていました。 Alamofire 4において

Alamofire.download(urlToCall, method: .get) { temporaryURL, response in 
    if FileManager.default.fileExists(atPath: finalPath!.path!) { 
     do { 
      try FileManager.default.removeItem(atPath: finalPath!.path!) 
     } catch { 
      // Error - handle if required 
     } 
    } 
    return finalPath! 

    } 
    .response { (request, response, data, error) in 

     if error != nil { 

     } 
     var myDict: NSDictionary? 
     let path = finalPath! 
     myDict = NSDictionary(contentsOf: path) 

     if let dict = myDict { 
      success(dict) 
     } 

     if finalPath != nil { 
      //doSomethingWithTheFile(finalPath!, fileName: fileName!) 
     } 
} 
+1

おそらく関連:http://stackoverflow.com/q/32932748/3303915 –

+0

いいえ。同じ問題ですが、同じではありません。スイフトとアラモファイアの異なるバージョン。 –

+0

iOS 8をターゲットに設定していますか?理由は分かりませんが、Alamofire for Swift 3は少なくともiOS 9でなければなりません。ご安心ください。 –

答えて

0

.response方法は、単一のパラメータ、DefaultDownloadResponseとクロージャをとります。

ところで、自分のパスをダウンロードに使用する場合は、return finalPath!が混乱しています.Alamofire 4は、ファイルURLとオプションからなるタプルを返すことを期待していますのオプションは.removePreviousFileで、手作業で自分自身を削除する手間が省けます。例えば

Alamofire.download(urlToCall, method: .get) { temporaryURL, response in 
    let finalURL: URL = ... 

    return (destinationURL: finalURL, options: .removePreviousFile) 
}.response { response in 
    if let error = response.error { 
     success(nil) 
     return 
    } 

    if let fileURL = response.destinationURL, let dictionary = NSDictionary(contentsOf: fileURL) { 
     success(dictionary) 
    } else { 
     success(nil) 
    } 
} 
関連する問題