Объекты, удаленные из NSArraycontroller, остаются в таблице до тех пор, пока не будут нажаты

У меня есть NSArraycontroller, который привязан к управляемому ObjectContext AppDelegate моего приложения. Он действует как очередь загрузки. Элементы добавляются в NSArraycontroller программно.

У меня есть таблица, в которой показаны два поля, каждое из которых представляет собой столбец со своим значением, индивидуально привязанным к указанному контроллеру NSArray. Когда начинается новая загрузка, она программно удаляется из NSArraycontroller.

Я добавил кнопку для удаления загрузок из очереди до их запуска, кнопка привязана к действию remove: NSArraycontroller, которое должно удалить выбранный элемент в таблице.

Моя проблема в том, что при нажатии кнопки удаления выбранный элемент не удаляется из таблицы, он остается там до тех пор, пока не будет нажата другая запись в таблице. Выбор строки, в которой был элемент, приводит к тому, что он будет выбран, пока кнопка мыши удерживается нажатой, как если бы он все еще был там, но без значений.

В консоли при нажатии на кнопку удаления появляется следующее: -[NSCFDictionary _setUnprocessedDeletion__:]: unrecognized selector sent to instance 0x2000f2220

Если я удаляю элементы из таблицы программно с помощью [[downloadsArray content] removeObjectAtIndex:0]; [downloadsTable reloadData]; [downloadsTable deselectAll:nil];, кажется, что он работает нормально, за исключением того, что я все еще получаю невидимый элемент, оставшийся позади, который можно выбрать, и он остается выбранным только тогда, когда кнопка мыши нажата.

Я привязал атрибут enable кнопки удаления к canRemove контроллера NSArray, и это работает правильно.

У меня есть метка, которая показывает количество элементов в очереди, она привязана к NSArraycontroller, аранжированныеобъекты, @count. Это работает правильно при добавлении элементов, но не при их удалении.

Любые идеи о том, что я делаю неправильно, будут высоко оценены.


person Struddie    schedule 11.12.2009    source источник


Ответы (2)


У меня была та же проблема, когда я пытался использовать NSFetchRequest с NSManagedObjectIDResultType, а затем пытался удалить результаты с помощью -[NSManagedObjectContext deleteObject:].

Решение: не используйте NSManagedObjectIDResultType для NSFetchRequest, если вы планируете удалить возвращенные объекты.

person Erlend Böe    schedule 07.02.2011

У меня просто была похожая проблема. Оказывается, _setUnprocessedDeletion__: это метод, определенный для NSManagedObject, и, по-видимому, его сообщение отправляется объекту, когда он удаляется из контроллера массива, который установлен в режим Entity. Это была моя проблема; после дня тяжелой переделки я получил контроллер массива, установленный в режим Entity, содержимое которого было привязано к массиву обычных объектов, а не к управляемым объектам. Одна из этих ошибок возникала всякий раз, когда я удалял объект. Посмотрите на contentArray вашего контроллера массива.

person Community    schedule 19.06.2010