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されれば)通常通りなので、それは意識してコードを組む必要があるようです。
参考サイト
関連記事
-
-
メソッドの呼び出し元を調べる
特定のメソッドに関して、そのメソッドをコールしているメソッド群を調べるための手順。 (1)調べたい
-
-
viewDidLoadとviewDidLayoutSubviewsのタイミング
真実の記事にある「コードでiPhone6を識別する」話とほんのちょっとだけ繋がっている話で、view
-
-
Xcode10からのimage literal / color literalの指定方法
アセットにあるUIImageの直接指定が可能なImage literalですが、気がついたらアセット
-
-
画面回転をしたあとに、UITextViewの先頭を表示する
回転によりサイズが可変するUITextViewで、縦向き(ポートレイト)から横向き(ランドスケープ)
-
-
UIAutomation関連覚書
割りと忘れがちなので、自分用備忘録を兼ねて、UIAutomationに関連するtips的なものをまと
-
-
NSAttributedStringをローカライズする方法
NSAttributedStringをLocalizeするうまい方法はないものかと探したら、これが手
-
-
UIActionSheetの文字がブレて多重表示される
UIActionsheetを使っていて、iOS7/iPadの組み合わせで起こる不具合らしき挙動が起こ
-
-
”No Scheme”になってしまった場合の対応
知人がXcodeで突然「No Scheme」表示になってRunするターゲットとデバイスが選択できない
-
-
User Defined Runtime Attributeについての覚書
UILabelに上下左右のパディングをつける方法を探して、結局「自分で以下のようなメソッドを持った拡
-
-
plistファイルに色を入れる
plistファイル中にUIColorを入れたい!という場合。普通RGBAの値を数値で入れるとかするけ
