【问题标题】:Handing a response in a controller after segueing to another controller在切换到另一个控制器后在控制器中处理响应
【发布时间】:2016-10-23 19:46:55
【问题描述】:

我正在使用 Cloudinary 存储用户在我的 Swift 2 应用程序中上传的图像。我对流程/架构有疑问。目前我正在做的是,一旦用户上传图像,我将图像发送到 Cloudinary,将图像 ID 发送到我的服务器,然后立即将用户转到下一个屏幕。有了这个 id,我以后可以参考 Cloudinary 上的图像,所以从技术上讲,我不需要等待 Cloudinary 的响应并让用户等待。是的,如果上传失败,我不知道,但这些都是边缘情况。这是我的代码:

@IBAction func btnRegister(sender: AnyObject) {
    let pictureId = self.btnImage.currentImage == NSUUID().UUIDString
    self.uploadToCloudinary(pictureId)

    //send to my server
    User.register(_userName, password: _password, picture: pictureId)
        .success { (value) in
         self.performSegueWithIdentifier("Home", sender: self)
         }
}

func uploadToCloudinary(pictureId:String){
        let image = UIImagePNGRepresentation(btnImage.currentImage!)! as NSData
        let uploader = CLUploader(_cloudinary, delegate: self)
        uploader.upload(image, options: ["public_id":pictureId], withCompletion:onCloudinaryCompletion, andProgress:onCloudinaryProgress)
}

func onCloudinaryCompletion(successResult:[NSObject : AnyObject]!, errorResult:String!, code:Int, idContext:AnyObject!) {
        //
}

但是,我现在意识到我需要保存一些额外的详细信息,例如 Cloudinary 发回给我的“版本”,因此我可能需要在 onCloudinaryCompletion 上执行一些操作以将这些详细信息发送到我的服务器。问题是——这意味着我现在必须让用户等到图像完成上传,然后才能将它们转移到下一个屏幕。

所以我的问题:

  1. 在 Swift 中,即使用户已经转移到另一个视图控制器,我仍然可以在完成处理程序中执行操作吗?这样我就可以保持当前的流程,并在successResult返回时保存它,但我不必让我的用户等待。

  2. 还有其他推荐的流程来做这样的事情吗?欢迎提出任何建议。

  3. 对于熟悉 Cloudinary 的人来说,有没有办法在上传之前知道版本?因为我真正需要的只是版本,如果我能在上传之前知道它,我可以将它与图片 ID 一起保存,而无需考虑 onCloudinaryCompletion。

【问题讨论】:

    标签: ios objective-c swift swift2 cloudinary


    【解决方案1】:

    从 Cloudinary 的角度来看,您可以使用以下方法之一:

    【讨论】:

    • 对于第一个要点,我想我在某处读到存储在文件夹中的图像需要该版本?
    • SDK 的默认行为是将v1/ 添加到所有包含文件夹结构的 URL。可以省略而不改变结果。唯一的影响是在失效的情况下,如下所述:cloudinary.com/documentation/…
    猜你喜欢
    • 2019-11-15
    • 2021-12-19
    • 1970-01-01
    • 2018-08-10
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多