Мое приложение имеет 2 окна, в обоих из которых отображаются объекты NSScrollView, управляемые контроллером. В основном первый имеет данные, второй имеет надлежащую агрегацию данных.
Оба полагаются на реализацию класса NSArrayController.
Я правильно спроектировал оба окна (по крайней мере, мне так кажется), но я получаю эту ошибку:
[<MyDocument 0x1020257c0> valueForUndefinedKey:]:
this class is not key value coding-compliant for the key <MY_ARRAY>.
Единственный способ решить эту проблему - немедленно создать экземпляр (я имею в виду, когда готовится первое окно) второй массив и заполнить его некоторыми значениями следующим образом:
NSMutableArray *newAggregates = [NSMutableArray array];
[newAggregates addObject:
[NSMutableDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithString:@"category"], @"category",
[NSString stringWithString:@"subcategory"], @"subcategory",
[NSNumber numberWithFloat:0.0], @"amount_1",
[NSNumber numberWithFloat:0.0], @"amount_2",
[NSNumber numberWithFloat:0.0], @"amount_3",
[NSNumber numberWithFloat:0.0], @"amount_4",
[NSNumber numberWithFloat:0.0], @"amount_5",
[NSNumber numberWithFloat:0.0], @"amount_6",
[NSNumber numberWithFloat:0.0], @"amount_7",
[NSNumber numberWithFloat:0.0], @"amount_8",
[NSNumber numberWithFloat:0.0], @"amount_9",
[NSNumber numberWithFloat:0.0], @"amount_10",
[NSNumber numberWithFloat:0.0], @"amount_11",
[NSNumber numberWithFloat:0.0], @"amount_12",
[NSNumber numberWithFloat:0.0], @"total",
nil]];
[self setAggregates:newAggregates];
Это работает, но это не то, что я хотел, я хочу, чтобы второй массив выполнялся только опционально, если и только если пользователь нажимает определенную кнопку.
Есть ли способ сделать это, или любой контроллер массива, присутствующий в приложении, должен быть создан в начале? Я абсолютно уверен, что должен быть способ избежать этого ...