連絡先の UITableView を表示するアプリを構築しているとしましょう。ユーザーの連絡先はリモート サーバーに保存されます。サーバーからユーザーの連絡先を取得し、Core Data に保存します。
UITableViewController が読み込まれ、Core Data から NSManagedObject サブクラス (ContactVO という名前) の配列がフェッチされます。この ContactVO の配列を使用して、UITableView を設定します。次に、サーバーにリクエストを送信して、ユーザーの最新の連絡先リストを取得します。サーバーから応答を受け取ったら、Core Data ストアからすべての連絡先を削除し、サーバー データから作成した連絡先を挿入します。この時点で、データが変更されたことを UITableViewController に通知し、デリゲート メソッドを介して新しい連絡先を渡します。
問題: Core Data から連絡先を削除するとすぐに、UITableViewController に保存されている ContactVO への参照がゴミになります。
ここでのアイデアは、テーブル ビューで常にユーザーの操作を許可しながら、利用可能な最新の連絡先を常に表示することです。
私が試したこと:
ContactVO とすべて同じプロパティを持つクラス (Contact) を作成し、このクラスのインスタンスに Core Data から取得したデータを入力してから、Contact オブジェクトの配列を UITableViewController に返します。
フェッチされた ContactVO ごとに NSDictionary を作成し、辞書の配列を UITableViewController に返します
これらの両方よりも良い方法が必要です。フェッチ リクエストの結果を格納するための推奨される方法は何ですか?