2017-03-10 10 views
0

誰かのコードをSwift 3に移行しようとしています。私は把握できなかった1行を除いて、すべてうまくいっています。非ファンクションタイプ 'SessionManager'の値を呼び出すことができません

Cannot call value of non-function type 'SessionManager'

import Alamofire 

struct AlamofireAPIManager { 
    static let sharedManager: SessionManager = { 
     let configuration = URLSessionConfiguration.default 
     configuration.timeoutIntervalForRequest = 360 // 120 seconds 
     configuration.timeoutIntervalForResource = 360 
     return SessionManager(configuration: configuration) 
    }() 
} 

. 
. 
. 

override init() { 
    let configuration = URLSessionConfiguration.default 
    configuration.timeoutIntervalForRequest = 360 
    configuration.timeoutIntervalForResource = 360 // seconds 

    self.alamofireManager = AlamofireAPIManager.sharedManager(configuration) 
} 

問題の行は次のとおりです:

self.alamofireManager = AlamofireAPIManager.sharedManager(configuration) 

私はそれを変更した場合、それはエラーを返しスウィフト2.2であるように正常に動作しますが、スウィフト3でコンパイルされませんto:

self.alamofireManager = AlamofireAPIManager.init() 

これはコンパイルされますが、正しく動作しません。

ここで彼が何をしようとしているのか、それをSwift 3に移行するために何をすべきか考えていますか?ありがとう。

**編集:ここでは、元のコードは、任意の移行前に、次のとおりです。

import Alamofire 

struct AlamofireAPIManager { 
    static let sharedManager: Manager = { 
     let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
     configuration.timeoutIntervalForRequest = 360 // 120 seconds 
     configuration.timeoutIntervalForResource = 360 
     return Manager(configuration: configuration) 
    }() 
} 

. 
. 
. 

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
configuration.timeoutIntervalForRequest = 360 
configuration.timeoutIntervalForResource = 360 // seconds 

self.alamofireManager = Alamofire.Manager(configuration: configuration) 
+0

は、なぜあなたはsharedManager変数にパラメータを渡していますか?エラーが示すように、SessionManagerは関数ではありません。 – mattd

+0

わからない、@mattd。私が言ったように、私は他人のコードに取り組んでいます。元のコマンドは実際には 'self.alamofireManager = Alamofire.Manager(configuration:configuration)'でした。移行中に数回変更されました。私はそれがセッションマネージャを共有しようとしていると仮定しています。 – Lastmboy

+0

はい、シングルトン変数です。変数宣言の中に変数を設定しているので、パラメータを受け付けません。 基本的には、コール中のパラメータを削除する必要があります。この2つのバージョンは同じです。 – mattd

答えて

0

これがコンパイルされています

import AlamoFire 

struct AlamofireAPIManager { 
    static let sharedManager: SessionManager = { 
     let configuration = URLSessionConfiguration.default 
     configuration.timeoutIntervalForRequest = 360 // 120 seconds 
     configuration.timeoutIntervalForResource = 360 
     return SessionManager(configuration: configuration) 
    }() 
} 

func i() { 
    let alamofireManager = AlamofireAPIManager.sharedManager 
} 
関連する問題