Так что, вероятно, вы решили это давно, но в случае, если кто-то еще наткнется на этот вопрос ...
Я заполняю массив через NSMutableArray
, но я не уверен, какМогу ли я заполнить массив через NSArrayController
, так как у меня нет экземпляра в моем классе Controller.m.Пожалуйста, скажите мне, как я могу решить эту проблему.
Возможно, вы делали что-то вроде
[myData addObject:someObject];
Однако ваш NSArrayController
не узнает об этом измененииэкземпляр NSMutableArray
, потому что addObject
не соответствует KVC.Вам необходимо сообщить любому объекту, который наблюдает, что ваш экземпляр NSMutableArray
изменился.Есть как минимум два способа сделать это.Предполагая, что ваше свойство экземпляра NSMutableArray
называется "myData", вы можете сделать что-то вроде следующего:
[self.willChangeValueForKey:@"myData"];
[myData addObject:someObject];
[self.didChangeValueForKey:@"myData"];
или
NSMutableArray *bindingsCompliantArray = [self mutableArrayValueForKey:@"myData"];
[bindingsCompliantArray addObject:someObject];
Другой ответ SO (связанный) имеет хорошее объяснение того, что на самом деле делает mutableArrayValueForKey, но я рекомендую прочитать документы для разработчиков Apple по кодированию значения ключа и наблюдению значения ключа, чтобы понять его.
Я перетащилЭкземпляр NSController в моем подносе mainmenu.nib.Нужно ли мне объявить IBOutLet NSArrayController в моем файле Controller.h, а затем связать его с экземпляром NSArrayController в трее?
Вам нужен NSArrayController
экземпляр в вашем файле пера, но вы делаетене нужно IBOutlet в вашем интерфейсе для ситуации, которую вы описали здесь.NSArrayController
должен быть привязан к ключу вашего NSMutableArray
(myData в моем примере), и, похоже, у вас уже правильно связаны столбцы таблицы.