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

StackOverflow https://stackoverflow.com/questions/1888780

Вопрос

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

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

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

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

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

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

Я связал включенный атрибут кнопки удаления с canRemove контроллера NSArray, и это работает правильно.

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

Буду очень признателен за любые идеи о том, что я делаю неправильно.

Это было полезно?

Решение

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top