2016-10-23 43 views
0

私は、ユーザーがSwift 2アプリにアップロードした画像をCloudnightで保存しています。私はフロー/アーキテクチャについての質問があります。現在私がやっていることは、ユーザーがイメージをアップロードするとすぐに、イメージをCloudnyに送信し、イメージIDをサーバーに送信し、ユーザーをすぐに次の画面に移動させることです。このIDを使用して、後でCloudinaryのイメージを参照できるので、Cloudineからの応答を待ってユーザーを待っておく必要はありません。はい、アップロードの失敗がある場合、わかりませんが、それはエッジケースです。これは私が持っているコードです。しかし、私は今、私は、このようなCloudinaryが私を送り返し、私はそれらを送信するためにonCloudinaryCompletionに何かをする必要がある場合がありますことを、「バージョン」など、いくつかの追加の詳細を保存する必要があることに気づい他のコントローラーに接続した後のコントローラーでの応答

@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!) { 
     // 
} 

詳細を私のサーバーに送ります。つまり、画像をアップロードしてから次の画面に進む前に、ユーザーが画像をアップロードするまで待たなければならないということです。

だから私の質問:スウィフトで

  1. は、私はまだ、ユーザーが別のビューコントローラに離れsegeuedした場合であっても、完了ハンドラで何かを行うことができますか?そうすれば、現在のフローを維持し、返されるたびにsuccessResultを保存することができますが、ユーザーを待たせる必要はありません。

  2. このような処理を行うための推奨フローがありますか?どんな提案も大歓迎です。

  3. Cloudnterに精通している方のために、アップロードする前にバージョンを知る方法はありますか?私が本当に必要とするのはバージョンですから、アップロードする前にそれを知ることができれば、写真IDとともに保存してonCloudinaryCompletionを忘れることができます。あなたは、次のいずれかの方法を使用することができCloudinary観点から

答えて

1

:バージョン使用して

+0

、私はバージョンがフォルダに保存された画像のために必要であることをどこかで読んだと思いますか? – Prabhu

+0

フォルダ構造を含むすべてのURLに 'v1 /'を追加するのは、SDKのデフォルトの動作です。結果を変更することなく省略することができます。 唯一の影響は、ここで説明されている無効化の場合です。http://cloudinary.com/documentation/upload_images#invalidating_cached_images_on_the_cdn –

関連する問題