Dataの機能のNSFetchRequest(以下、フェッチリクエスト)について説明する。Dataを使って保存したデータをメモリ上に展開することを要求する機能である。過去の記事でも何回もフェッチリクエストをしてきた。そのときは特定のエンティテイのデータを丸ごと取得したが、フェッチリクエストに絞り込み条件を付けると、条件に適合するデータのみを取得できる。フェッチリクエストに絞り込み条件を付けるには、以下のコードのようにフェッチリクエストのpredicateプロパティに値を設定する。'広島’」は、属性nameの値が広島であるデータのみを取得するということだ。Swift//フェッチリクエストのインスタンスを生成する。//フェッチリクエストに条件を追加する。//フェッチリクエストを実行してをオブジェクトを取得する。[Player]123456789//フェッチリクエストのインスタンスを生成する。"Player")//フェッチリクエストに条件を追加する。’広島’")//フェッチリクエストを実行してをオブジェクトを取得する。[Player]絞り込み条件を試す絞り込み条件を付けたフェッチリクエストを試してみよう。検証に使ったXCodeのプロジェクトをGitHubに置いたので試してみる人はご利用されたし。Barに入力した文字列で保存データを検索し、検索結果をテーブルビューに表示するものを実装しておいた。何も入力しなかった場合は全データが表示される。以下はViewControllerのコード。フェッチリクエストの条件式(青色網掛け箇所)を変更しながら検証を行った。//本のオブジェクトを管理オブジェクトコンテキストに格納する。//管理オブジェクトコンテキストの中身を保存する。//デリゲート先を自分に設定する。//何も入力されていなくてもReturnキーを押せるようにする。//管理オブジェクトコンテキストを取得する。//コンフリクトが発生した場合はマージする。//検証用データを格納する。//セルのラベルに本のタイトルを設定する。//キーボードをしまう。//検索結果配列を空にする。//フェッチリクエストのインスタンスを生成する。//属性nameが検索文字列と一致するデータをフェッチ対象にする。//フェッチリクエストを実行する。//テーブルを再読み込みする。{//本のオブジェクトを管理オブジェクトコンテキストに格納する。//発売日}//管理オブジェクトコンテキストの中身を保存する。{super.viewDidLoad()//デリゲート先を自分に設定する。self//何も入力されていなくてもReturnキーを押せるようにする。false//管理オブジェクトコンテキストを取得する。applicationDelegate.managedObjectContext//コンフリクトが発生した場合はマージする。NSMergeByPropertyObjectTrumpMergePolicy//検証用データを格納する。{//セルを取得する。UITableViewCell//セルのラベルに本のタイトルを設定する。{//キーボードをしまう。testSearchBar.endEditing(true)//検索結果配列を空にする。searchResult.removeAll()//フェッチリクエストのインスタンスを生成する。{//属性nameが検索文字列と一致するデータをフェッチ対象にする。{//フェッチリクエストを実行する。{print(error)}//テーブルを再読み込みする。testTableView.reloadData()}}以下にフェッチ要求のフォーマットに指定できるものをまとめる。フェッチ要求の仕様はとても広いので使われそうなものに絞って掲載している。詳細を知りたいかたは以下の公式ドキュメントを参照されたし。Guide(日本語)」プレースホルダープレースホルダーとは、プログラミング実行時に文字列を完成させるための、文字列中の仮置きの値ことである。「こんにちは、◯さん」の◯をプログラミング実行時に埋めるイメージ。25.0)数値、日付を比較するいつも使っている比較演算子をフォーマットでも使用できる。420数字に限らず日付も比較することができる。ViewController.swiftの本を検索する箇所を以下のコードに変更する。Swift//入力された文字列からNSDateインスタンスを生成する。[Book]12345678910//入力された文字列からNSDateインスタンスを生成する。dateFormatter.dateFromString(testSearchBar.text!)//本を検索する。[Book]以下は実際のプレイ動画。指定した日付以降に出版された雑誌が検索された。"[週刊|月刊].*")条件と一致しないものを取得するには、条件式の頭に「NOT」か「!(ビックリマーク)」をつける。Swift//200円〜300円以外の本を検索する。300)123//200円〜300円以外の本を検索する。300)文字列の比較ではcまたはdのオプションをつけれる。"vジャンプ")複数の条件を組み合わせる「かつ」、「または」を使って条件を組み合わせられる。400)条件を増やして複雑になってきたら括弧を使って条件の範囲を分かりやすくすべし。集計結果を条件に利用できる。Propertyを使ってプロパティにフェッチ結果を持たせる。異なる管理オブジェクトコンテキストで保存したデータをリレーションシップに設定する。