Я получил NSMutableArray
(содержащий NSMutableDictionary
экземпляров), связанным с NSArrayController
(NSArrayController
в свою очередь, связан с NSTableView
столбцов).Лучший способ для добавления/удаления к NSMutableArray управляется NSArrayController
Что самое Какао и KVO- дружественный способ, программно:
- добавляет новый пустой объект (
NSMutableDictionary
) в массив? - удалить выбранный объект? (После удаления, предыдущий пункт - если существует - должен быть выбран)
Я всегда делал это таким образом, я не особенно нравится - и я уверен, что это не самый лучший способ обойти (слишком много строк кода для чего-то такого простого: в какао, что указывает на неправильный подход к теме :-)).
Мой код (довольно излишеством, на самом деле):
Добавление в массив
NSMutableArray* oldParams = [paramsArray mutableCopy];
[oldParams addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys:@"Parameter",@"Parameter",@"",@"Value", nil]];
[self setParamsArray:oldParams];
[paramsController setSelectionIndex:[paramsArray count]-1];
Удаление в настоящее время выбора ред объект из массива
if ([paramsArray count]>0)
{
int s = [paramsController selectionIndex];
NSMutableArray* oldParams = [paramsArray mutableCopy];
[oldParams removeObjectAtIndex:s];
[self setParamsArray:oldParams];
if (s<=[paramsArray count]-1)
[paramsController setSelectionIndex:s];
else
[paramsController setSelectionIndex:[paramsArray count]-1];
}
Итак, каковы ваши мнения по этому поводу?
Я получаю «Программный сигнал:« EXC_BAD_ACCESS »' в обоих случаях ... Любые идеи? –
@ Dr.Kameleon: Возможно. Убедитесь, что любое предыдущее использование контроллера массива не включает использование 'setContent:' (хотя я обнаружил, что использование привязок для этого в самом начале работает просто отлично). И само собой разумеется, что ваш поддерживающий массив должен быть допустимым, распределенным «NSMutableArray». – trudyscousin
Мой массив подставки отлично работает. Дело в том, что я могу делать ЛЮБОЙ вид обработки непосредственно в массиве, но ваш подход (с использованием контроллера напрямую для обработки массива) никогда не работал для меня ... –