在类中声明 Alamofire.SessionManager 一次,以便在类内的各种实用程序函数中使用它

Posted

技术标签:

【中文标题】在类中声明 Alamofire.SessionManager 一次,以便在类内的各种实用程序函数中使用它【英文标题】:Declaring Alamofire.SessionManager once in the class for using it in various utility functions inside the class 【发布时间】:2018-09-24 14:18:49 【问题描述】:

所以我正在为我的项目创建一个用于 Alamofire 网络的实用程序类。

我里面有各种功能,比如:

func createAccount()

func login()

我想对所有这些函数的请求和响应使用固定的时间限制。

我知道这同样适用:

let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 10
        configuration.timeoutIntervalForResource = 10
        AFManager = Alamofire.SessionManager(configuration: configuration)

但是,我不想在所有实用程序函数中初始化 AFManager。我想要一个声明。我该怎么做?我无法得到它。

【问题讨论】:

您在寻找“单例”模式吗? ***.com/questions/37953317/… 【参考方案1】:

你需要的是一个property:

class NetworkManager 

    private let manager: Alamofire.SessionManager = 
        let configuration = URLSessionConfiguration.default
        configuration.timeoutIntervalForRequest = 10
        configuration.timeoutIntervalForResource = 10
        retrurn Alamofire.SessionManager(configuration: configuration)
    ()

    func createAccount() 
        manager.request(...)
        ...
    

    func login() 
        manager.request(...)
        ...
    


【讨论】:

以上是关于在类中声明 Alamofire.SessionManager 一次,以便在类内的各种实用程序函数中使用它的主要内容,如果未能解决你的问题,请参考以下文章

在类中声明结构

在类中声明一个自动 lambda 函数

php--在类中声明常量的关键字

友元在类中的使用

在类中声明第一个字段属性之前添加额外的行

在类中声明 Alamofire.SessionManager 一次,以便在类内的各种实用程序函数中使用它