FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

SwiftでNCMBを使う:写真をアップロードする

f:id:mbaasdevrel:20180806093819p:plain

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に任せられます。コード量は決して多くありませんので、ぜひご利用ください。

データストア (iOS) : 基本的な使い方 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。