3

私は UITableView を持っており、そのセクションの 1 つは NSFetchedResultsController によって管理されています。コア データ オブジェクトを取得し、「順序」属性で並べ替えます。

  1. 次数 1 のオブジェクト
  2. 次数 2 のオブジェクト
  3. 次数 3 のオブジェクト

私が直面している要件は、ユーザーが行を移動できることです。移動後:

  1. 次数 2 のオブジェクト
  2. 次数 1 のオブジェクト
  3. 次数 3 のオブジェクト

ユーザーがテーブル ビューの行を移動した結果、コア データ内の管理対象オブジェクトが順序どおりに変更を反映するようにするには、どうすればよいですか? GMGridView を使用しているときに、2 つのオブジェクトを交換するコールバックがあります。そのような場合、順序を変更すると機能しますが、UITableView にはそのような機能はありません。

移動した行の下にあるすべてのオブジェクトの順序属性を手動で変更する必要がありますか?

4

3 に答える 3

1

行を移動すると、それ自体の順序属性だけでなく、その後ろのすべての行に影響します。私が見つけた回避策は、フェッチ要求オブジェクトを nsmutablearray にコピーしてから、この配列内でオブジェクトを移動することです。次に for ループを実行し、各オブジェクトの order 属性を更新してから、管理対象オブジェクト コンテキストを保存します。次に、uitableview をリロードします。これは大変な作業のように思えますが、現在、フェッチ リクエストでのオブジェクトの移動は、挿入や削除のように自動ではありません。これが役立つことを願っています!

于 2013-04-23T00:56:56.357 に答える
1

フェッチされたオブジェクトと「行の順序」の間の関連付けを保存する必要があります。行の順序に基づいて行を並べ替えます。行の順序はデフォルトで「順序」属性になります。ユーザーが行を移動すると、「行の順序」も更新されます。

関連付けは、CoreData オブジェクト自体 (別の属性を追加) で維持するか、フェッチされたオブジェクトをその行の順序にマッピングすることによって (NSUserDefaultsまたは 内でNSDictionary) 維持できます。

于 2013-04-21T15:43:48.097 に答える