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されれば)通常通りなので、それは意識してコードを組む必要があるようです。
参考サイト
関連記事
-
-
Size ClassとUIViewController.view
タイトルの件でちょっとハマったことがある上に、特に日本語情報もStackOverflowからも情報が
-
-
plistファイルに色を入れる
plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ
-
-
viewDidLoadとviewDidLayoutSubviewsのタイミング
真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view
-
-
App Storeのページにアプリケーションから直接アクセスする方法
去年(2013年)の秋ごろ、iOS7の出始めの時期に書かれたblog記事などを参考にすると、iOS6
-
-
iOS8のシミュレーターでLocalizationのテストをする
iOS8.1のシミュレーターでは、従前できていたシミュレーター内での「設定」(Setting)からの
-
-
StoryboardからPopoverを作っても位置合わせコードは必要
これだけだとわかりづらいんですが。 XcodeのStoryboardから、Segueを"Prese
-
-
iOS7でカメラ撮影時のステータスバーを消す
UIImagePickerControllerをカメラモードで表示するとステータスバーがカメラの一番
-
-
GoogleスプレッドシートからCSVにエクスポートしたデータを得る方法
情報がない中さんざ苦労しましたが、Googleスプレッドシート(の最初のシート)をCSVとしてエクス
-
-
NSStringのフォーマット書式
Appleのページになく、IEEEのprintfフォーマットのページにあるので、C言語と親しくしてな
-
-
メソッドの呼び出し元を調べる
特定のメソッドに関して、そのメソッドをコールしているメソッド群を調べるための手順。 (1)調べたい
