LoginSignup
0
0

More than 1 year has passed since last update.

NCMBのSwift SDKでのDateオブジェクトの取り扱い

Posted at

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 に変換する方法が良さそうです。データストアでは他にも文字列、数値、位置情報、真偽値、配列、オブジェクトなどが扱えますので、ぜひ活用してください。

mBaaSでサーバー開発不要! | ニフクラ mobile backend

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0