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)
は、なぜあなたはsharedManager変数にパラメータを渡していますか?エラーが示すように、SessionManagerは関数ではありません。 – mattd
わからない、@mattd。私が言ったように、私は他人のコードに取り組んでいます。元のコマンドは実際には 'self.alamofireManager = Alamofire.Manager(configuration:configuration)'でした。移行中に数回変更されました。私はそれがセッションマネージャを共有しようとしていると仮定しています。 – Lastmboy
はい、シングルトン変数です。変数宣言の中に変数を設定しているので、パラメータを受け付けません。 基本的には、コール中のパラメータを削除する必要があります。この2つのバージョンは同じです。 – mattd