iOS9でのNSFetchedResultsContollerDelegateの挙動
公開日:
:
最終更新日:2016/04/12
Tips iOS9, NSFetchedResultsContollerDelegate, 不具合
ハマったので短いながらメモしたいと思います。
NSFetchedResultsContollerDelegateで、フェッチしたNSManagedObjectの更新を検出するためにNSFetchedResultsChangeUpdateを捕まえるため、controller:didChangeObject:atIndexPath:forChangeType:newIndexPathのメソッドを使って、メソッド内でNSFetchedResultsChangeTypeによるswitch文を組んでいたのですが、switchに来れども処理はされず、という状況で困っていました。
よくよくデバッガでNSFetchedResultsChangeTypeを見たら、本来NSFetcedResultsChangeUpdateでくるべきtypeがNSFetcedResultsChangeMoveで来ている!!!
これはひどいバグです・・・(参考サイトの書き込みを見た限りでは、iOS8では起こらない模様)
このメソッドにtype == NSFetchedResultsChangeMoveで来た時に、本当のmoveかそうでないかを見分けるには、indexPathとnewIndexPathを見ればよいようです。
Updateの場合newIndexPath == nilとなるので、これで見分ければよい、ということな模様。
前述のとおり、iOS9以外では(そしてiOS9でも、今後FIXされれば)通常通りなので、それは意識してコードを組む必要があるようです。
参考サイト
関連記事
-
-
実機テストしたときのデータを取り出す
Xcodeでコンパイルして実機テストしている場合に、テストデータを実機から取り出す方法です。 以下
-
-
Xcode10からのimage literal / color literalの指定方法
アセットにあるUIImageの直接指定が可能なImage literalですが、気がついたらアセット
-
-
GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法
情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス
-
-
bitbucketをXcode5で使用する
bitbucketは無償で5人までの少人数チーム用のクローズド(非公開)リポジトリを作成できるため、
-
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
-
UIButtonのLocalizeに関するTips
Storyboardに設置したUIButtonのタイトルのLocalizeをしてたのですが、英語では
-
-
NSDictionary/NSMutableDictionaryの”valueForKey:”と”objectForKey:”の違い
表題にある通り、似ていて混同する(そして、取り違えても「たいてい」普通に動作する)NSDiction
-
-
WSCoachMarksViewをSwiftで使う場合の手順
Objective-Cで記述されてるライブラリ全般に当てはまることもあるんですが、個別でやることも含
