Файл xib в моем проекте OS X содержит представление таблицы, поддерживаемое NSArrayController, которое установлено в . Объект Entity Name (aka Core Data). Когда я отправляю сообщение -add: этому контроллеру массива, возникает исключение, когда генерируется консоль:NSArrayController из NSManagedObject обращается к * массиву * вместо * установленного *
NSManagedObjects объекта Foo не поддерживает -mutableArrayValueForKey: для свойств «баров».
Правильно! Вместо этого NSManagedObjects поддерживает -mutableSetValueForKey :, и я всегда думал, что NSArrayController знал об этом и вел себя соответственно - находясь в . Объект Entity Name, я ожидаю, что он отправит -mutableSetValueForKey: в мой объект Foo, а не -mutableArrayValueForKey :. Из документации:
Обычно коллекция представляет собой массив, если контроллер управляет отношением управляемого объекта (см. NSManagedObject), коллекция может быть набором.
Если я «подделать», добавив следующий метод в мой класс Foo, он предотвращает исключение из воспитывается, но, конечно, это действительно не работает:
- (NSMutableArray*)mutableArrayValueForKey:(NSString*)key {
[self willAccessValueForKey:key];
NSMutableArray* result = [[[self valueForKey:key] allObjects] mutableCopy] ;
[self didAccessValueForKey:key];
return result;
}
Что может быть Неправильно здесь? Я проверил «режим» этого контроллера массива пять раз.