Swiftで遊ぼう! - 627 - CoreDataDemo3 - 9 - NSFetchedResultsControllerの実装!
- Swiftで遊ぼう!の前書き-> Life-LOG OtherSide
- Swift2.1 & Xcode7.1対応の日本語版アップルチュートリアル!
- Table View実装チュートリアルをXcode7.2.1で解説
- Core Data シンプルチュートリアル
- 私の本業、オフィシャルなブログ-> Life-LOG
祝!やっとオリジナルアプリの審査が通って公開されました!
と言いたいところですが、今日はエイプリルフールなんで。
地道にiOS開発の勉強を独学を続けています。CoreDataを使ったデータベースの扱いを学んでいるところです。TableViewを連携させるとかなり便利なのですが、ここでNSFetchedResultsControllerを組み込むと検索結果の扱いが更に便利になります。
では、CoreDataDemo3をNSFetchedResultsControllerを使ったバージョンに切り替えていきます。
このページで説明している「var students: [Student] = []」は、データベースからフェッチ(読み取る)したデータを受け取る変数です。実はこの変数をNSFetchedResultsController型に変更するんです。コードを次のように変更します。
NSFetchedResultsController型の変数「results」を変数「students」から変更します[②]。NSFetchedResultsControllerが持つ機能は、Swiftの持っているアレー型の標準機能とは比べものにならないんです。クラス継承を越えて使用できるようにデリゲーションメソッドが用意されています。
したがって、クラス宣言部分に「NSFetchedResultsControllerDelegate」プロトコール準拠させなければなりません[①]。
プロトコールを準拠させるときに忘れがちなステップ、delegateプロパティーにViewController(self)を加え[③]ます。このステップはTableViewの実装時に省かれているように見えますが理由があります。TableViewはstoryboardを使って実装されることが多いのでこのステップはstoryboardで視覚的にされてしまいコードでは省かれます(実装の多様性)。NSFetchedResultsControllerの実体はstoryboardに存在しないので、必ずコードに加えなければなりません。
今日はここまで