0

アプリケーションの 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 にバインドされています。これは、アイテムを追加するときは正しく機能しますが、削除するときは機能しません。

私が間違っていることについてのアイデアは大歓迎です。

4

2 に答える 2

0

私はちょうど同様の問題を抱えていました。_setUnprocessedDeletion__: は NSManagedObject 用に定義されたメソッドであることが判明し、エンティティ モードに設定されたアレイ コントローラーからオブジェクトが削除されると、明らかにそのメッセージがオブジェクトに送信されます。それが私の問題でした。大がかりな改造を 1 日行った後、アレイ コントローラをエンティティ モードに設定することになりました。このアレイ コントローラのコンテンツは、マネージド オブジェクトではなく、通常のオブジェクトのアレイにバインドされていました。オブジェクトを削除するたびに、これらのエラーの 1 つが発生しました。配列コントローラーの contentArray を見てください。

于 2010-06-19T05:08:24.347 に答える
0

NSManagedObjectIDResultType で NSFetchRequest を使用しようとしたときに同じ問題が発生し、-[NSManagedObjectContext deleteObject:] で結果を削除しようとしました。

解決策: 返されたオブジェクトを削除する予定がある場合は、NSFetchRequest に NSManagedObjectIDResultType を使用しないでください。

于 2011-02-07T18:07:41.620 に答える