在 NSURLSessionData 的实现中未调用委托方法
Delegate methods not called in implementation of NSURLSessionData
我有一个class,AWSUtil
,我希望能够使用NSURLSessions
获取图片上传和下载的进度
class AWSUtil : NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate
我可以设置会话,而且它们有效
func sessionTest(url: NSURL){
let task = NSURLSession(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
delegate: self,
delegateQueue: NSOperationQueue.mainQueue()
).dataTaskWithURL(url){(data, response, error) in
//code
}
task!.resume()
}
但我的问题是 NSURLSession didWriteData
等委托方法没有被调用。
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64){
//never called
}
我试过实施不同的 NSURLSession
协议并使 class 不符合 NSObject
,但都不起作用。无论我实现什么委托,或者我在 class 中放入什么委托方法,都会调用其中的 none。
我认为这是因为对象在调用之前被释放了,但我不确定。如果我想调用其中一个函数,我会使用
func awsTest(url: NSURL){
let aws = AWSUtil()
aws.sessionTest(url)
}
但是正在调用 NSURLSessionDownloadDelegate
个方法中的 none 个。有什么办法可以解决这个问题,或者有解决方法吗?
您正在呼叫 dataTaskWithURL
。这是一种数据任务方法。数据任务有一个名为 NSURLSessionDataDelegate
的协议。覆盖这些方法,例如URLSession:dataTask:...
。
didWriteData
在使用下载方法时调用,例如 downloadTaskWithURL:,而您不是在调用下载方法。
如果您查看 https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/#//apple_ref/occ/instm/NSURLSession/downloadTaskWithURL:,在左侧的内容区域中,您会看到数据、下载和上传任务分别细分。每个都有对应的委托方法。
我有一个class,AWSUtil
,我希望能够使用NSURLSessions
class AWSUtil : NSObject, NSURLSessionDelegate, NSURLSessionDownloadDelegate
我可以设置会话,而且它们有效
func sessionTest(url: NSURL){
let task = NSURLSession(
configuration: NSURLSessionConfiguration.defaultSessionConfiguration(),
delegate: self,
delegateQueue: NSOperationQueue.mainQueue()
).dataTaskWithURL(url){(data, response, error) in
//code
}
task!.resume()
}
但我的问题是 NSURLSession didWriteData
等委托方法没有被调用。
func URLSession(session: NSURLSession, downloadTask: NSURLSessionDownloadTask, didWriteData bytesWritten: Int64, totalBytesWritten: Int64, totalBytesExpectedToWrite: Int64){
//never called
}
我试过实施不同的 NSURLSession
协议并使 class 不符合 NSObject
,但都不起作用。无论我实现什么委托,或者我在 class 中放入什么委托方法,都会调用其中的 none。
我认为这是因为对象在调用之前被释放了,但我不确定。如果我想调用其中一个函数,我会使用
func awsTest(url: NSURL){
let aws = AWSUtil()
aws.sessionTest(url)
}
但是正在调用 NSURLSessionDownloadDelegate
个方法中的 none 个。有什么办法可以解决这个问题,或者有解决方法吗?
您正在呼叫 dataTaskWithURL
。这是一种数据任务方法。数据任务有一个名为 NSURLSessionDataDelegate
的协议。覆盖这些方法,例如URLSession:dataTask:...
。
didWriteData
在使用下载方法时调用,例如 downloadTaskWithURL:,而您不是在调用下载方法。
如果您查看 https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSURLSession_class/#//apple_ref/occ/instm/NSURLSession/downloadTaskWithURL:,在左侧的内容区域中,您会看到数据、下载和上传任务分别细分。每个都有对应的委托方法。