swift - 无法调用非函数类型的值 'SessionManager'

标签 swift session swift3 migration alamofire

我正在尝试将其他人的代码迁移到 Swift 3。一切都很顺利,除了一行我无法弄清楚。它在 Swift 2.2 中工作正常,但在 Swift 3 中无法编译。它返回错误:

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)

如果我将其更改为:

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)

最佳答案

正在编译:

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
}

关于swift - 无法调用非函数类型的值 'SessionManager',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729241/

相关文章:

swift - 如何检查变量是否为零

ios - 是否可以为 CoreData 中的一对多关系使用有损耦合类? (类似于 Android Room ORM 中的 @Embedded)

ios - 升级 iPhone/Xcode 破坏了我的 cocoapod 库

swift - mac app打开后如何执行命令

ios - 与 UITableView 的 super View 上的 UIPanGestureRecognizer 冲突

javascript - 快速 session Cookie 管理

python - SQLAlchemy - 有没有办法查看当前 session 中的内容?

session - JSF session 管理和调优

swift - 我应该在 swift 的 getter 方法中返回什么

ios - 访问 Firebase 数据库 Swift 3 中的多级嵌套子级