ios - 遍历数组,使用网络调用/回调函数检查每个元素,如果没有找到所需元素,则转到默认值

标签 ios swift networking callback

由于这个问题的性质非常特殊,我无法在任何地方找到答案。基本上我想创建与特定用户的消息对话,但前提是与该用户的对话尚不存在。我正在循环处理一系列对话,对于每次对话,我都会通过调用我的后端来获取其他用户的身份。但是,如果没有找到与特定用户的对话,那么我想创建一个新对话。这就是我正在做的:

for convo in convos {
    HTTPManager.getOtherUserFromConversation(conversation: convo, success: { (otherUser) in
        if desiredUser == otherUser {
            //Found the desired conversation, so bring the user 
            //to it instead of creating a new one
        }
    }, failure: {
        //Networking failure
    })     
}
//IF WE DIDN'T FIND IT, CREATE A NEW CONVERSATION HERE

我想过创建一个名为“found”的 bool 值,如果我们找到所需的对话,则将其设置为 true,但我不知道如何等到最后一个回调执行之前检查此 bool 值以避免过早调用检查。谁能指出我正确的方向?

最佳答案

经典的解决方案是使用 dispatch-group https://developer.apple.com/documentation/dispatch/dispatchgroup

这方面有很多代码示例。这个想法是每个网络调用都应该在一个单独的任务中,系统会在所有任务完成时通知您(这是您检查“找到”的地方)。

关于ios - 遍历数组,使用网络调用/回调函数检查每个元素,如果没有找到所需元素,则转到默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58409126/

相关文章:

ios - 如何获取 NSManagedObjectId 并检索数据

networking - 如何使用 docker-compose+docker-swarm+overlay 网络发现缩放的容器主机?

android - android模拟器浏览器中的ERR_NAME_NOT_RESOLVED

ios - CAEmitterLayer-kCAEmitterLayerCircle,圆形路径?

iphone - 调用 NSURLConnectionDataDelegate 方法来下载图像只是偶尔有效

ios - 以正确的方式分配回调

ios - 从 Swift 3 中的字节数组中读取值

ios - 如何指向和定位 arkit 文本

swift - Store Swift v3 中产品的延迟加载

multithreading - Haskell - 线程时缓慢的套接字连接