Объекты, удаленные из NSArraycontroller, остаются в таблице до тех пор, пока не будут нажаты.
-
19-09-2019 - |
Вопрос
У меня есть контроллер 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 вашего контроллера массива.