ios - 子类化 AFHTTPSessionManager 并使其成为 swift 中的单例

标签 ios swift swift2 afnetworking-2

我是 swift 新手,具有良好的 Objective-C 背景,我正在尝试通过子类化 AFHTTPSessionManager 并将其转换为单例来编写 Web 处理程序。在 self 初始化期间,我收到一个奇怪的错误,我无法解决(Must call a designated initializer of the subclass 'AFHTTPSessionManager') - 它也在下面的代码中进行了注释,以帮助理解它发生的位置。另请建议这是否是实现单例的正确方法。

class XYZWebHandler: AFHTTPSessionManager
{
    internal static let _sharedInstance = XYZWebHandler()

    class func sharedInstance() -> XYZWebHandler
    {
        return _sharedInstance
    }

    init(baseURL url: NSURL!)
    {
        super.init(baseURL: url) //Must call a designated initializer of the subclass 'AFHTTPSessionManager'
        setup()
    }

    override init(baseURL url: NSURL!, sessionConfiguration configuration: NSURLSessionConfiguration!)
    {
        super.init(baseURL: url, sessionConfiguration: configuration)
        setup()
    }

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    func setup()
    {
        requestSerializer = AFJSONRequestSerializer()
        responseSerializer = AFJSONResponseSerializer()
    }   

}

非常感谢您的帮助。期待尽快收到您的回复

最佳答案

1) 你的单例需要改进 - 请参阅此处 swift 的一些很好的例子: https://github.com/hpique/SwiftSingleton/tree/master/Singleton

2) 至于错误:Swift 在初始化器上有两种类型:指定型和便利型 - 后者是次要的,不必提供。至于指定的 - 它是初始化所有属性的主要初始化程序,它是每个类的必备项,并且还必须从其直接父类(super class)中调用指定的初始化程序。 鉴于此 - 您需要转到 AFHTTPSessionManager 并找到一个适当的指定初始化程序来创建 session 并将其存储在 _sharedInstance 中。您也可能是这家商店的 Actor (as!)。例如

_sharedInstance = AFHTTPSessionManager(baseURL: NSURL("http://your_url.com")) as! XYZWebHandler

3)我加入了对 Alamo 的推荐 - 它较新:)

祝你好运。

关于ios - 子类化 AFHTTPSessionManager 并使其成为 swift 中的单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34393583/

相关文章:

ios - 数据传递失败

ios - 在单独的类中实现 CLLocationManagerDelegate 时出现内存错误

ios - 如何隐藏特定版本的 Apple Watch 应用程序

ios - 将链接语法转换为嵌入在文本 UITextView 中的链接

ios - 快速单击 UITableView 中的编辑按钮的新行

ios - 无论启动日期如何,UILocalNotification 总是在我加载我的应用程序时立即显示

objective-c - 调用restorePreviousTransactionsOnComplete后,MKStorekit isFeaturePurchased返回NO

ios - 在所有 Collection View 中使用相同的单元格

swift - 如何在 UILabel 文本中混入 UIButton?

Ios Swift 解码从 GCM 通知发送的 json 数据