アプリケーションの AppDelegate の managedObjectContext にバインドされた NSArraycontroller があります。ダウンロード キューとして機能します。アイテムはプログラムで NSArraycontroller に追加されます
これには 2 つのフィールドを示すテーブルがあり、それぞれの列の値は、前述の NSArraycontroller に個別にバインドされています。新しいダウンロードが開始されると、プログラムによって NSArraycontroller から削除されます。
ダウンロードを開始する前にキューからダウンロードを削除するボタンを追加しました。ボタンは NSArraycontroller の remove: アクションにバインドされており、テーブルで選択したアイテムを削除する必要があります。
私の問題は、削除ボタンをクリックしても、選択したアイテムがテーブルから削除されず、テーブル内の別のエントリをクリックするまでそこに残ることです。項目があった行を選択すると、マウス ボタンが押されている間、項目がまだそこにあるかのように選択されますが、値はありません。
削除ボタンをクリックすると、コンソールに次のように表示されます。
-[NSCFDictionary _setUnprocessedDeletion__:]: unrecognized selector sent to instance 0x2000f2220
プログラムを使用してテーブルからアイテムを削除すると、正常に
[[downloadsArray content] removeObjectAtIndex:0];
[downloadsTable reloadData];
[downloadsTable deselectAll:nil];
動作するように見えますが、マウスボタンが押されたときにのみ選択され、選択されたままになる非表示のアイテムが残っています。
削除ボタンの enabled 属性を NSArraycontroller の canRemove にバインドしましたが、これは正しく機能します。
キュー内のアイテム数を示すラベルがあります。これは、NSArraycontroller、arrangedObjects、@count にバインドされています。これは、アイテムを追加するときは正しく機能しますが、削除するときは機能しません。
私が間違っていることについてのアイデアは大歓迎です。