2009-12-11 3 views
0

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

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

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

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

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

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

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

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

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

ответ

0

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

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

0

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

Смежные вопросы