2017年2月14日火曜日

iOS/Xcode/Swift3: CoreData はSQLが使えないRDB?

 久しぶりの更新。Swift3でアプリ開発をしているが、CoreDataというDBラッパー(内部はSQLiteらしい)を使用している。テーブル定義を専用ファイルに書き込むだけでデータコンテナとなるクラスが自動生成され、リレーションもつけられので、それなりに便利だが、通常のSQLを使ったクエリーを書けるようにはなっていない。
条件を指定して検索するのだが、せっかく自動生成していても、カラムの名称などは手入力しないといけないし、条件式も文字列とプレースホルダーで与える形だ。 また、Swift3になってデータ型がNSのついた古いもの(NextStep由来の Object-C 型)から、NSのつかないものに切り替わっているため、その相互変換もやや煩わしい。
let nsdate = NSDate()
let date:Date = nsdata as Date
 などでもできるのだが、タイムゾーンの扱いが微妙に異なる気がするので、複数の国や時間帯がある場合は注意を要しそうだ。