我有一个视图控制器,有多个方法可以触发NSURLSession
。
它们中的每一个都由NSURLDelegate
处理,例如
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data
在这种情况下:我如何知道接收数据的结果是什么方法/会话?我需要为每种方法处理不同的接收数据,因为它们都会返回不同的数据。
最好,我会将收到的数据直接反馈到相关方法中。
答案 0 :(得分:0)
可以直接比较任务。如果您的视图控制器是多个任务的共同委托,那么为每个任务保留weak
属性并在委托方法中进行直接比较是完全可以的。
// declare weak taskA and taskB, and assign them:
self.taskA = session.dataTaskWithRequest(...
func URLSession(session: NSURLSession, dataTask: NSURLSessionDataTask, didReceiveData data: NSData) {
if dataTask == self.taskA {
// it's taskA
} else if dataTask == self.taskB {
// it's taskB
}
}
答案 1 :(得分:-1)
创建新的自定义类MyDelegate
或其他任何内容。为每个会话实例化此类,并设置“推回”接收数据所需的数据。让它成为会议的代表。
然后每个代理都会获得自己的数据,并可以使用您在实例化时提供的参数将其推送到任何需要的位置。