私はこれを機能させるために髪を引き裂いています。
私はすべての StackOverflow 関連の問題を見てきましたが、最終的なステップを機能させることができません!
NSFetchedResultsController
Core Data からの表示データがあります。これはすべて完璧に機能します。そこにデータがある場合、データが表示され、すべて問題ありません。
ただし、オンライン サーバーからより多くのデータを取得して Core Data に保存する非同期更新があります。
私が望んでいるのは、NSFetchedResultsController
これらの更新を取得して表示することです(つまり、現在表示されているtableViewにアニメーション化します)。
今の編成はこんな感じです……
これに対する両方の応答に感謝します。これを機能させるためにもう一度試してみましたが、まだ「リアルタイム」で更新が表示されません。
私が今どこにいるのかを説明してみようと思いました。初期設定でいくつか問題が見つかりましたが、修正しましたが、まだ何もありません。
では、まずクラスと、どこで何が起こるか...
[クラス = AppDelegate]
[managedObjectContext (メイン コンテキスト) と永続ストアなどがあります...]
[メソッド = mergeChanges:notifiaction これは GCD を使用して mainThread に戻り、mergeChangesWithObjectblahblah を実行します]
[クラス = NetworkDataClass]
[これには、init 時に (メイン スレッドで) 作成される独自の ManagedObjectContext があります]
[メソッド = saveContext
1. bgContext の didsavenotification のオブザーバーとして AppDelegate を追加します。
2. コンテキストを保存します。
3. AppDelegate をオブザーバーとして削除] ( AppDelegate に保存時に停止するブレークポイントがあるため、観察が機能していることはわかっています。)
[メソッド = getDataFromOnline (実際の名前ではありませんが、要点はわかります)
1. bg スレッドへの GCD .
2. NSURLRequest を作成します。
3. 要求を同期的に実行します。
4. データをクラス コンテキストに入れます。
5. 自己 saveContext を実行します]
[クラス = tableViewClass]
[tableView を持ち、NSFetchedResultsController も NSFetchedResultsControllerDelegate を使用]
[メソッド = viewWillAppear
1. ネットワーク クラス シングルトンで getDataFromOnline メソッドを実行]
表示されていることを確認するためにいくつかのデフォルト データがそこにあり、tableViewClass (上記で詳述) に入ると、正しいセクション タイトルなどを使用して、正しい並べ替え順序でデータを正しく表示できます。 fetchedresultscontroller が機能していること。
getDataFromOnline メソッドを適切にトリガーすることも (ブレークポイントで) 確認できます。データが入ってくるのを確認でき、それが ManagedObject サブクラスを介して追加されているのを確認できます。これはすべて bgthread で行われています。
また、保存時に AppDelegate がその mergeChanges 関数を適切に実行していることもわかります。
私が見ることができないのは、テーブルが新しいデータで更新されていることだけです。
popToRootViewController を使用してテーブルに戻ると、すべての新しいデータがそこにあるので、マージが完了し、新しいデータが追加およびマージされたことがわかりますが、マージ時に表示されません。
足りないものはありますか?
テーブルで reloadData を実行する必要がありますか? fetchedresultscontroller から「再フェッチ」または何かを起動する必要がありますか?
これで本当に苦戦。
あなたが提供できる(より多くの)助けに感謝します。