Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 627 - CoreDataDemo3 - 9 - NSFetchedResultsControllerの実装!

祝!やっとオリジナルアプリの審査が通って公開されました!

と言いたいところですが、今日はエイプリルフールなんで。

地道にiOS開発の勉強を独学を続けています。CoreDataを使ったデータベースの扱いを学んでいるところです。TableViewを連携させるとかなり便利なのですが、ここでNSFetchedResultsControllerを組み込むと検索結果の扱いが更に便利になります。

では、CoreDataDemo3をNSFetchedResultsControllerを使ったバージョンに切り替えていきます。

yataiblue.hatenablog.com

このページで説明している「var students: [Student] = []」は、データベースからフェッチ(読み取る)したデータを受け取る変数です。実はこの変数をNSFetchedResultsController型に変更するんです。コードを次のように変更します。

f:id:yataiblue:20160326111508j:plain

NSFetchedResultsController型の変数「results」を変数「students」から変更します[②]。NSFetchedResultsControllerが持つ機能は、Swiftの持っているアレー型の標準機能とは比べものにならないんです。クラス継承を越えて使用できるようにデリゲーションメソッドが用意されています。

したがって、クラス宣言部分に「NSFetchedResultsControllerDelegate」プロトコール準拠させなければなりません[①]。

プロトコールを準拠させるときに忘れがちなステップ、delegateプロパティーにViewController(self)を加え[③]ます。このステップはTableViewの実装時に省かれているように見えますが理由があります。TableViewはstoryboardを使って実装されることが多いのでこのステップはstoryboardで視覚的にされてしまいコードでは省かれます(実装の多様性)。NSFetchedResultsControllerの実体はstoryboardに存在しないので、必ずコードに加えなければなりません。

今日はここまで