- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类,AWSUtil
,我希望能够使用NSURLSessions
获取图像上传和下载的进度
class AWSUtil : NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate
我能够设置 session ,并且它们可以工作
func sessionTest(url: NSURL){
let task = NSURLSession(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
delegate: self,
delegateQueue: NSOperationQueue.mainQueue()
).dataTaskWithURL(url){(data, response, error) in
//code
}
task!.resume()
}
但我的问题是委托(delegate)方法,例如 NSURLSession didWriteData
没有被调用。
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64){
//never called
}
我尝试实现不同的 NSURLSession
协议(protocol)并使该类不符合 NSObject
,但都不起作用。无论我实现什么委托(delegate),或者我在类中放置什么委托(delegate)方法,都不会调用它们。
我认为这是因为对象在调用之前被释放,但我不确定。如果我想调用其中一个函数,我会使用
func awsTest(url: NSURL){
let aws = AWSUtil()
aws.sessionTest(url)
}
但是没有调用任何 NSURLSessionDownloadDelegate
方法。有什么办法可以解决这个问题,或者有解决方法吗?
最佳答案
您正在调用dataTaskWithURL
。这是一个数据任务方法。数据任务有一个名为 NSURLSessionDataDelegate 的协议(protocol)。覆盖这些方法,例如URLSession:dataTask:...
。
didWriteData
在使用下载方法(例如 downloadTaskWithURL:)时被调用,并且您没有调用下载方法。
如果你看https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/#//apple_ref/occ/instm/NSURLSession/downloadTaskWithURL :,在左侧的内容区域中,您会看到数据、下载和上传任务是单独分割的。每个都有其相应的委托(delegate)方法。
关于ios - 在 NSURLSessionData 的实现中未调用委托(delegate)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31217789/
我有一个类,AWSUtil,我希望能够使用NSURLSessions获取图像上传和下载的进度 class AWSUtil : NSObject, NSURLSessionDelegate, NSURL
我是一名优秀的程序员,十分优秀!