gpt4 book ai didi

ios - NSURLSession 跟踪多个获取请求?

转载 作者:行者123 更新时间:2023-12-01 17:12:11 25 4
gpt4 key购买 nike

我曾经用 NSURLConnection 做我想做的事.

  • 我会创建一个新的自定义 NSOperation对象
  • 设置我的 NSMutalbeRequest当准备好触发operation女巫会排队操作...
  • 在那里我会有NSURLConnection delegate方法,然后我可以跟踪所有进度、完成、错误等...

  • 所以,关键是,请求将包含在它自己的 operation 中。和 delegate电话会在那里发生, 请求操作对象和 NSURLConnection delegate 之间具有一对一的关系 .

    我不确定如何使用 NSURLSession 执行此操作.与 NSURLSession我可以为我想要执行的所有 GET 调用触发我想要的所有 dataTasks。
    但是我设置了 共享 使用此调用的 session :
    + (NSURLSession *)sessionWithConfiguration:(NSURLSessionConfiguration *)configuration delegate:(id <NSURLSessionDelegate>)delegate delegateQueue:(NSOperationQueue *)queue;

    所以我要解决的问题是 如果我只有一个对象发生所有委托(delegate)调用,我如何跟踪多个 GET 请求的进度 ?我只有一个代表在那里。所以现在我有 1 个 session ,1 个委托(delegate)对象,但我有多个 GET 请求同时发生。

    我知道每个任务都有一个“taskIdentifier”,但这需要我有某种字典。

    例如,当委托(delegate)调用时:
    - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data

    被调用,然后我必须在字典中查找任务,然后我从字典中获取的对象可以引用我需要跟踪该请求的进度的内容......

    我不确定解决此问题的最佳方法是什么?有谁知道这应该怎么做?

    最佳答案

    基本上你需要做的是为每个请求设置可访问性标签

        for task 1

    [dataTask setAccessibilityLabel:@"label1"];

    for task 2

    [dataTask setAccessibilityLabel:@"label2"];

    然后在委托(delegate)方法中检查可访问性标签
        if([dataTask.accessibilityLabel  isEqual: @"label1"])
    {
    // handle data from first task

    }

    if([dataTask.accessibilityLabel isEqual: @"label2"])
    {
    // handle data from second task

    }

    关于ios - NSURLSession 跟踪多个获取请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21973360/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com