クリックするまで、NSArrayControllerはから削除されたオブジェクトは、テーブルに滞在します
-
19-09-2019 - |
質問
私は自分のアプリケーションの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];
私はまだその後ろに残って見えないアイテムを選択することができますし、マウスボタンが押された場合にのみ選択されたまま除いて、正常に動作するようです。
私は、NSArrayControllerはのcanRemoveに削除ボタンのenabled属性をバインドしているし、これは正しく動作します。
私は、キュー内のアイテムの数を示したラベルが、これはNSArrayControllerは、arrangedObjects、@countにバインドされています。それらを削除するときにアイテムを追加することではなく、ときに正しく動作します。
私が間違ってやって上の任意のアイデアをいただければ幸いです。
解決
私はNSManagedObjectIDResultTypeとNSFetchRequestを使用しようとしたときに同じ問題を抱えていた、そして次いで結果を削除しようとした - [NSManagedObjectContext DeleteObjectの:]。
解決策:オブジェクトを削除することを計画している場合がdont NSFetchRequestためNSManagedObjectIDResultTypeを使用返さ
。他のヒント
私は同様の問題を抱えていました。 NSManagedObjectに対して定義された方法であり、明らかにそのメッセージは、それがエンティティモードに設定されているアレイコントローラから削除されたオブジェクトに送信される:それは_setUnprocessedDeletion__のことが分かります。それは私の問題でした。重い改造の日後、私は、そのコンテンツの定期的なオブジェクトの代わりに、管理対象オブジェクトの配列に結合されたエンティティーモードに設定アレイコントローラになってしまいました。私は、オブジェクトを削除するたびに、これらのエラーのいずれかが発生しました。お使いのアレイコントローラのcontentArrayを見ます。