iOSアプリの開発時にSwiftを使っているケースが増えています。その際、各種SDKの利用にObjective-C版を使われることがまだまだ多いようです。Objective-C版は昔から使われていて、こなれていますし、言語のバージョンアップも行われなくなっています。
しかしAppleはダイナミックな変化も軽々と行ってきます。今後のことを考えると、Swiftで作られたライブラリを使っていくべきではないでしょうか。今回はニフクラ mobile backendで提供しているObjective-C SDKとSwift SDKについて、Swiftから使った場合のコードの違いについて解説します。
SDKのインストールについて
Objective-C版のSDKはCocoaPods、Carthageでインストールできます。Swift SDKは現時点ではCocoaPodsのみサポートしています。
もちろん、どちらもSDKを直接読み込んで使うこともできます。
初期化
Objective-C版の場合の初期化です。
NCMB.setApplicationKey("YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY")
Swift版の場合の初期化です。Swift版はアプリケーションキー、クライアントキーそれぞれをパラメーター名を指定して適用します。
NCMB.initialize(applicationKey: "YOUR_APPLICATION_KEY", clientKey: "YOUR_CLIENT_KEY");
データストア
今回はデータストアの使い方について解説します。Objective-C SDKでデータストアを新規保存する際のコードです。
let object = NCMBObject.init(className: "TestClass") object?.setObject("Hello world", forKey: "message") object?.saveInBackground({error in if error != nil { print("エラー") print(error) } else { print("保存成功") } })
Swift SDKで保存する場合です。setObjectのようなメソッドを使わずにデータを指定できるので、より自然な形で書けているかと思います。
let object : NCMBObject = NCMBObject(className: "TestClass") object["message"] = "Hello world" object.saveInBackground(callback: { result in switch result { case .success: print("保存に成功しました") case let .failure(error): print("保存に失敗しました: \(error)") } })
データの検索
データストアを検索する場合のコードです。こちらはObjective-C SDKをSwiftから使う場合です。
let query = NCMBQuery.init(className: "TestClass") query?.whereKey("author", equalTo: "ncmb") query?.findObjectsInBackground({(objects, error) in if error != nil { print(error) } else { print(objects) } })
Swift SDKの場合です。whereの書き方、findInBackgroundなどメソッド名が異なります。また、データの取り出し方も異なります。
let query = NCMBQuery.getQuery(className: "TestClass") query.where(field: "author", equalTo: "ncmb") query.findInBackground(callback: { result in switch result { case let .success(array): print("取得に成功しました 件数: \(array.count)") case let .failure(error): print("取得に失敗しました: \(error)") } })
まとめ
Objective-C SDKをSwiftから使う場合、ドキュメントとはメソッド名が異なるので変換が必要です。Swift SDKはドキュメント通りに記述するだけで利用できます。Swiftは言語自体のバージョンアップも行われるので、それに追従していく必要がありますが、バージョンを重ねる毎により簡便に書けるようになっています。ぜひSwiftを使われる際にはSwift SDKとともに使ってみてください。