NCMBのiOS SDKはObjective-Cでできていますが、最近のiOSアプリであればSwiftで開発する方が多くなっているでしょう。そこでSwiftからNCMB SDKを使う方法を紹介します。今回はカメラアプリで撮影したデータのアップロード法です。
フォトライブラリを起動する
まず写真を選択する処理です。今回はフォトライブラリを指定してます。これはNCMBとは関係ありません。
@IBAction func btnUploadClick(_ sender: Any) { if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { let pickerView = UIImagePickerController() pickerView.sourceType = .photoLibrary pickerView.delegate = self self.present(pickerView, animated: true) } }
撮影後のデータを受け取る
そして撮影した後のデータを受け取ります。
func imagePickerController(_ imagePicker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]){ // ここに処理を書く }
まず画像データを取り出します。
if let image = info[.originalImage] as? UIImage { // imageが画像データ }
そして画像データをJPEGにします。
let jpgData = NSData(data: image.jpegData(compressionQuality: 0.8)!)
画像データをアップロード
さらに画像データに対して適当なファイル名を指定し、NCMBFileを作成します。
let formatter: DateFormatter = DateFormatter() formatter.dateFormat = "yyyyMMDDHHmmss" let fileName = "\(formatter.string(from: Date())).jpg" let file = NCMBFile.file(withName: fileName, data: jpgData as Data!) as! NCMBFile
後は保存処理を実行します。
file.saveInBackground({ (error) in if error != nil { print(error) } else { print("Upload successful") } }) { (int) in print("\(int)%") }
ここまでの処理で画像のアップロード処理が完了します。
写真データの保存はiOSのカメラからデータを受け取った後、それをDataに変換するのがコツです。それさえできてしまえば、ネットワーク上の処理はSDKに任せられます。コード量は決して多くありませんので、ぜひご利用ください。