Как редактировать данные NSArrayController (или использовать что-то еще) - PullRequest
1 голос
/ 29 мая 2011

я создал nsarraycontroller для отображения его данных в моем nstableview.это работаетно как мне изменить эти данные сейчас?

[arrayController addObject:[...]]

добавляет объект, как мне его вернуть?

я пробовал:

NSMutableArray *data = [arrayController mutableArrayValueForKey:@"column1"];]

но потом яполучить эту ошибку

2011-05-29 19:25:50.125 TestApp[1665:903] [<NSArrayController 0x113808500> valueForUndefinedKey:]: this class is not key value coding-compliant for the key column1.

(объекты в моем массиве-контроллере, представляющие строки в моем представлении, относятся к классу (с именем FileEntry), состоящему из 4 свойств, и я добавил их в качестве ключей к моему nsarraycontroller)

я думал, что kvc-compilant означает, что каждый атрибут имеет геттер и сеттер?(и разве это не то, что свойства делают?).

Я проверил свой класс, если я мог бы использовать эту функцию:

FileEntry *entry = [[FileEntry alloc] initWithUrl:@"test"];  //(this adds the string "test" to the property "fileurl")
NSLog(@"%@\n", [entry valueForKey:@"fileurl"]);

and it returns:
> 2011-05-29 19:31:54.760 TestApp[1718:903] test

, и она работает.так как мой класс не может быть kvc-совместимым?

в любом случае, я также попытался использовать источник данных tableviews, но не могу заставить эти две функции работать.это будет более полезным, чем nsarraycontroller?Можно ли изменить данные nsarraycontroller?

1 Ответ

2 голосов
/ 29 мая 2011

Обычно для обработки NSArrayController требуется массив контентов, поэтому вы можете просто взять этот массив и использовать методы NSMutableArray. Например, в вашем MyController.h есть объявление массива с его методами setter и getter, и вам нужно только привязать к нему массив contend контроллера массива. Затем вы можете взять две кнопки для добавления и удаления методов контроллера массива, чтобы что-то добавить. Теперь вы должны привязать значение столбца к, например, FileEntry.fileurl из ваших управляемых объектов контроллера массива, теперь вы должны иметь возможность добавлять вещи в табличное представление. И вы также можете редактировать имена в табличном представлении. Если вы хотите извлечь что-то из массива в своей программе, вы можете использовать вывод вашей таблицы, например:

NSInteger row = [myTableViewOutlet selectedRow];
FileEntry* myEntry = [myArray objectAtIndex:row];
...