在 for 循环中按顺序将 Swift 中的图像数组上传到 S3

Uploading Array of Images in Swift to S3 Sequentially in a For-Loop

提问人:narner 提问时间:5/14/2021 更新时间:5/14/2021 访问量:161

问:

我有一个数组 ',我想将其上传到 Swift 中的 S3 实例。以下是我上传它们的代码:UIImage

 func sendImageMessage(photo : UIImage)  {
        s3Uploader.uploadFile(withImage: photo) { [self] (url) in
            processMessage(ourShip: ourShip!, shipUrlString: shipURLString, chatShip: airlockStore.selectedChannel.channelShip, chatName: airlockStore.selectedChannel.channelName, text: url, index: idx)
            sendPendingMessage(text: url)
        }
    }

这是我的代码,我从聊天视图中的相机输入栏获取图像数组:

   func inputBar(_ inputBar: InputBarAccessoryView, didPressSendButtonWith attachments: [AttachmentManager.Attachment]) {
        
        for item in attachments {
            if  case .image(let image) = item {
                 self.sendImageMessage(photo: image)
            }
        }
        inputBar.invalidatePlugins()
    }

我遇到的问题是,如果选择了多个图像,则在第一项完成上传之前,会再次调用每个项目。sendImageMessage

我尝试使用闭包来暂停我的循环,直到上传第一个项目之前,不要转到图像数组中的下一个项目,但无法让它工作。

iOS Swift 循环 循环 闭包

评论

1赞 Paulw11 5/14/2021
一次发送多个上传内容有关系吗?这样做会更快。
0赞 narner 5/14/2021
@Paulw11 我想是的;我需要获取上传的每张图片的网址;不只是上传它们并继续前进
1赞 Paulw11 5/14/2021
好的,但这是一个不同的问题。为什么你不能收集所有的网址?您的真正问题是想知道所有异步上传何时完成吗?如果是这样,您可以使用DispatchGroup
0赞 narner 5/14/2021
@Paulw11 有点;基本上目前发生的事情是第二张图片被上传了两次;第一个被抵消了
0赞 narner 5/14/2021
我一直在努力遵循这里公认的答案:stackoverflow.com/questions/35906568/......

答: 暂无答案