5

私のアプリケーションでは、オブジェクトをArrayControllerに直接追加します。私がするすべてのアイテムをきれいにしたいとき:

[[downloadItemsController content] removeAllObjects];

ただし、このコマンドは、アレイコントローラがバインドされているTableViewを更新しません。すべてのアイテムを削除して別の新しいアイテムを追加すると、そのアイテムのみが表示されます。それは問題ありませんが、何も追加しなくても、すべてのアイテムがテーブルに残っています。

私が行った場合

[downloadItemsController prepareContent];

古いアイテムはすべてテーブルビューから削除されますが、編集できる新しい空のアイテムが表示されます。私はそれを望んでいません、そして私の列の1つにチェックボックスセルがあるので、私は常にチェックボックスのある行を取得します。

既存のアイテムをすべて削除した後、アイテムのない空のテーブルが必要です。

4

5 に答える 5

32

オブジェクトからすべてのオブジェクトをすばやく削除するにはNSArrayController

NSRange range = NSMakeRange(0, [[anArrayController arrangedObjects] count]);
[anArrayController removeObjectsAtArrangedObjectIndexes:[NSIndexSet indexSetWithIndexesInRange:range]];

バインディングは自動的に更新されます。元のSO回答を参照してください。

于 2011-11-23T12:30:43.333 に答える
3

これは、コントローラーのコンテンツを「背後で」変更しているためです。配列コントローラーの-removeObjects:メソッドを使用してみてください。

于 2010-08-03T13:43:01.393 に答える
3

これは私のために働いた

[anArrayController setContent:nil]

このようにすぐにコンテンツの入力を開始できます

[anArrayController addObject: @{ .... }]
[anArrayController addObject: @{ .... }.mutablecopy]
[anArrayController addObject: aDictionary]
于 2015-03-24T02:14:41.833 に答える
0

メソッドのグループを呼び出すremoveObject..ことは、Core Data オブジェクトのコレクションにとって特に不便です。これは、remove...本当にデータを削除する必要がある場合 (ユーザーが UI で [削除]NSArrayControllerボタンを押した場合など) を対象としているように思われるため、 Core Data DB からもオブジェクトを削除するのが最善の方法です。

私は単純な手動制御を行っており、メソッド内のオブジェクトの配列を追加、削除、および置換するのに最適であることがわかりましたNSArrayControllersetContent:中身をクリアするだけでsetContents:@[]使えます。

于 2014-02-22T09:40:01.063 に答える