【问题标题】:swift how to adopt to NSURLSessionDownloadDelegate protocolswift 如何采用 NSURLSessionDownloadDelegate 协议
【发布时间】:2015-11-24 00:52:39
【问题描述】:

我想创建一个采用NSURLSessionDownloadDelegate 协议的类

我所做的是:

class imageDelegate: NSURLSessionDownloadDelegate  {
}

这很简单,很好。但我想添加其中一种方法。我这样做了:

class imageDelegate: NSURLSessionDownloadDelegate  {
     @objc func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didFinishDownloadingToURL location: NSURL) {
        print("asdfasf")
    }
}

然后我得到了错误:

 Type 'imageDelegate' does not conform to protocol 'NSObjectProtocol'

知道如何解决这个问题吗?

【问题讨论】:

  • Swift 的惯例是以大写字母开头的类命名
  • @LeoDabus 好的,我会改变它。你知道我的问题的解决方案吗?

标签: ios swift nsurlsession nsurlsessiondownloadtask


【解决方案1】:

我通常使用带有完成块的调用,所以我不太熟悉使用 `NSURLSessionDownloadDelegate'。

你得到的错误说你需要遵守 NSObject 协议,它告诉我你需要让你的类成为 NSObject 的子类。这将使您摆脱当前遇到的错误。

查看 NSURLSessionDownloadDelegate 协议的文档。协议中似乎有 3 个方法。

编辑:查看协议的标头,只需要 thedidFinishDownloadingToURL 方法。其他 2 个是可选的。

但是,如果您查看文档,他们会说:

NSURLSessionDownloadDelegate 协议定义了委托方法 你应该在使用 NSURLSession 下载任务时实现。在 除了这些方法,一定要实现 NSURLSessionTaskDelegate 和 NSURLSessionDelegate 协议来处理 所有任务类型和会话级事件共有的事件, 分别。

因此您还需要实现NSURLSessionTaskDelegate 和NSURLSessionDelegate 协议中的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多