Core Data導入
Core Dataを使うため、プロジェクト作成時「Use Core Data」をチェックする。
プロジェクト作成後、拡張子「.xcdatamodeld」が自動作成される。その中にEntityを作成する。
データの取得
@FetchRequest( entity: Singer.entity(), sortDescriptors: [ NSSortDescriptor(keyPath: \Singer.firstName, ascending: true), NSSortDescriptor(keyPath: \Singer.lastName, ascending: true) ], predicate: NSPredicate(format: "%K BEGINSWITH[c] %@", "lastName", "a") ) var singers: FetchedResults<Singer>
その中、sortDescriptorsはSQLのORDER BYと等価、predicateはWHEREと等価。
%Kはキーのプレースホルダー、%@はパラメータのプレースホルダー。[c]は大小文字無視という意味。
だから完全の意味はlastNameは"A"または"a"から始まるSingerを取り出す、ソート順はfirstNameの昇順とlastNameの昇順であること。
BEGINSWITHと似ている使い方はENDSWITHとCONTAINSがある。他の比較符はSQLと一致。BETWEENを使う場合、パラメーターは[0, 100]のような二つ元素の数列が必要。
先にvar singers: FetchedResults<T>
を定義して、後で検索結果を与えるのも可能です。
singer = FetchRequest( entity: Singer.entity(), sortDescriptors: [ NSSortDescriptor(keyPath: \Singer.firstName, ascending: true), NSSortDescriptor(keyPath: \Singer.lastName, ascending: true) ], predicate: NSPredicate(format: "%K BEGINSWITH[c] %@", "lastName", "a") ).wrappedValue
プロジェクト作成した時点、まだ何もデータが存在していない。この時データ取得しようとしても0件になる。次回は新規データ作成の方法を紹介します。