NCMB Swift SDKでのTipsです。
NCMBのデータストア(クラウドデータベース)はスキーマーレスで自由にフィールドを追加したり、型を指定できます。そのため、行相当のデータを扱うNCMBObjectではフィールドの型を判別せず利用できます。
ただ、毎回型を判別しながら使わないといけないので、若干注意が必要です。
日付型の扱い
日付型で入っているフィールドに対しては、次のように取得できます。
let date = obj["DATE_FIELD"]! as Date
ただし、 DATE_FIELD
が存在しなかったり、別な型のデータが入っていると上記コードはエラーになるので注意が必要です。
存在をチェックしてから取得する
そのため、以下のように行うのが良さそうです。
if let dateValue = obj["DATE_FIELD"] as Any? {
_date = dateValue as! Date
}
自分で日時をパースする場合
NCMBのデータストアに保存されている日時はISO8601形式になります。さらにミリセカンドを含む形になっているので、以下のようにフォーマッタを定義します。
let formater = ISO8601DateFormatter()
formater.formatOptions.insert(.withFractionalSeconds)
そしてパースします。
let params = dateValue as! Dictionary<String, String>
_date = formater.date(from: params["iso"]! )!
まとめ
基本的に as Any?
で取得して、フィールドが存在するようであれば Date
に変換する方法が良さそうです。データストアでは他にも文字列、数値、位置情報、真偽値、配列、オブジェクトなどが扱えますので、ぜひ活用してください。