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

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

NCMBをSwiftで使う(セットアップ編)

f:id:mbaasdevrel:20180806093819p:plain

Swiftは進化の速いプログラミング言語で、ほぼ毎年メジャーアップデートをしています。mBaaSでは今なおObjective-Cで書かれたSDKを提供していますが、とは言え、Objective-CからSwiftに乗り換えたiOSアプリ開発者も増えていますので、徐々にSwift × mBaaSの情報も増やしていかなければなりません。

ということで今回はCocoaPodsを使ったGetting Startedを紹介します。

Xcodeプロジェクトを作る

まずはベースになるXcodeプロジェクトを作ります。これは言語としてSwiftを選択する以外、特別なことはしません。

ブリッジファイルを作る

Objective-Cで作られたフレームワークをSwiftで使えるようにするためにブリッジファイルを作成します。Xcodeで新規 Header File ファイルを作成します。名前は プロジェクト名-Bridging-Header.h が良いでしょう。

f:id:mbaasdevrel:20180806093625p:plain

内容は以下のようになります。

//
//  HelloNCMB-Bridging-Header.h
//  HelloNCMB
//
//

#ifndef HelloNCMB_Bridging_Header_h
#define HelloNCMB_Bridging_Header_h

#import <NCMB/NCMB.h>

#endif /* HelloNCMB_Bridging_Header_h */

NCMBのSDKをインストールする

Carthage を使う方法もありますが、対応していないフレームワークもあるので CocoaPods を使います。

CocoaPodsをインストール

Rubygemsを使います。Rubyはすでにインストールされていることとします。

gem install cocoapods
pod setup
cd (Xcodeプロジェクトのディレクトリ)
pod init

プラグインをインストール

mBaaSでは認証キーを扱うので、それを直接ハードコーディングするのは好ましくありません。そこで cocoapods-keys を使います。

Gemfileを作成して、内容を次のようにします。

source 'https://rubygems.org'
gem 'cocoapods-keys'

そしてインストールします。

bundle install

Podfileを作る

Podfileを以下の内容で作成します。 (プロジェクト名) となっている部分はそれぞれ読み替えてください。

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target '(プロジェクト名)' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for (プロジェクト名)
  pod 'NCMB', :git => 'https://github.com/NIFCloud-mbaas/ncmb_ios.git'
  
  target '(プロジェクト名)Tests' do
    inherit! :search_paths
    # Pods for testing
  end

  target '(プロジェクト名)UITests' do
    inherit! :search_paths
    # Pods for testing
  end

end

plugin 'cocoapods-keys', {
  :project => "(プロジェクト名)",
  :keys => [
    "applicationKey",
    "clientKey"
  ]}

SDKのインストール

pod install でSDKのインストールを行います。この時、 cocoapods-keys が対話的にキーを保存してくれます。

pod install

 CocoaPods-Keys has detected a keys mismatch for your setup.
 What is the key for applicationKey
 > e61...669

Saved applicationKey to HelloNCMB.
 What is the key for clientKey
 > 65c...247

Saved clientKey to HelloNCMB.
Analyzing dependencies
Fetching podspec for `Keys` from `Pods/CocoaPodsKeys`
Downloading dependencies
Using Keys (1.0.1)
Using NCMB (2.4.3)
Generating Pods project
Integrating client project
Sending stats

ブリッジヘッダーファイルを指定する

Build Settingsの Object-C Bridging Header の項目で先ほど作ったブリッジヘッダーファイルを指定します。例えば ./HelloNCMB/HelloNCMB-Bridging-Header.h といった具合です。

f:id:mbaasdevrel:20180806093655p:plain

コードを書く

キーを読み込む

AppDelegate.swift にてキーを読み込みます。 (プロジェクト名)Keys() という関数が定義されています。例えば以下のようになります。

import Keys
let keys = HelloNCMBKeys()

これで keys.applicationKey といった形でアクセスできます。

NCMBを初期化する

まずNCMBを初期化します。

NCMB.setApplicationKey(keys.applicationKey, clientKey: keys.clientKey)

データストアのオブジェクトを作成

次にデータストアのオブジェクトを作成します。今回は TestClass としています。

let obj = NCMBObject(className: "TestClass")

値を設定する

オブジェクトに値を設定します。

obj?.setObject("Hello, NCMB!", forKey: "createDate")

保存する

オブジェクトの保存は同期、非同期の指定ができます。今回は非同期で保存します。

obj?.saveInBackground({ (err) in
  if err != nil {
    print(err?.localizedDescription ?? "");
  } else {
    print("Saved");
  }
})

まとめ

使い方は簡単ですが、最初のセットアップ時においてブリッジヘッダーファイルを作成、読み込まなければならないのが注意点です。この辺りもXcodeのバージョンによって異なるので、新しいバージョンが出るとやり方が変わる可能性があります。現状、最新版のXcode9.4ではこのように指定します。

iOSアプリでmBaaSを使う際には参考にしてください。

中津川 篤司

中津川 篤司

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