ニフクラ mobile backendでは各種言語向けにSDKを提供しています。その中で最も新しいSwift SDKについて、その使い方を紹介します。
今回はデータストアに位置情報データを保存する方法を解説します。
実際のコード
実際のコードは次のようになります。データストアのHelloクラスに対して、geoというフィールドで位置情報を保存しています。
let obj = NCMBObject(className: "Hello") // Helloというクラス名
// 位置情報の定義
var geo: Dictionary<String, Any> = [:]
geo["__type"] = "GeoPoint"
geo["latitude"] = 35.6585805
geo["longitude"] = 139.7454329
obj["geo"] = geo // ← 位置情報をセット
obj.saveInBackground(callback: { result in
switch result {
case .success:
print(obj.objectId! as String)
case let .failure(error):
print(error)
}
})
データストアで扱える型について
データストアでは次のようなデータ型を扱えます。
- 文字列
- 数値
- 真偽値
- 日付
- オブジェクト(配列含む)
- 位置情報
位置情報の型について
位置情報は現時点(1.2.0)のSwift SDKでは専用クラスを提供していません。そのため、Dictionary型を用いています。データは次の3つのプロパティがあります。
名称 | 型 | 意味 |
---|---|---|
__type | 文字列 | GeoPoint固定 |
latitude | 数値 | 緯度 |
longitude | 数値 | 経度 |
__type
を GeoPoint とすることで、データが位置情報型であることを定義しています。ほかに日付、ポインター、リレーション型の場合に __type
を利用します(日付型は暗黙的にDate型と相互変換されるので気にする必要はありません)。
まとめ
将来的に位置情報クラスが追加されるはずですが、今の時点で位置情報をデータストアに保存したい場合には、今回の方法を利用してください。