Я не могу вспомнить, где / кто мне это сказал, но мне сообщили, что наблюдение за ключом "agedObjects "с помощью keyPathsForValuesAffectingValueForKey: в настоящее время не работает для NSArrayControllers. Вы можете наблюдать вложенные ключи (layoutObjects.name и т. Д.), Но вы не можете наблюдать расположенные объекты напрямую.
Итак, решение в моем случае состояло в том, чтобы создать два экземпляра объекта в моем файле пера, обычный NSArrayController и AFArrayController. AFArrayController упорядочилОбъекты: определены так:
- (NSArray *)arrangedObjects;
{
return [self limitedArrayFromArray:[super arrangedObjects]];
}
- (NSArray *)limitedArrayFromArray:(NSArray *)theArray;
{
NSUInteger upperLimit = 0;
if (floor(NSAppKitVersionNumber) <= NSAppKitVersionNumber10_5) {
upperLimit = 500;
} else {
upperLimit = 10000;
}
NSUInteger count = [theArray count];
if (count > upperLimit) count = upperLimit;
NSArray *arrayToReturn = [theArray objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, count)]];
return arrayToReturn;
}
Теперь я могу наблюдать упорядоченные объекты в NSArrayController, если я хочу получить все объекты, или упорядоченные объекты в AFArrayController, если я хочу получить ограниченный набор, и я могу наблюдать подчиненные свойства и в NSArrayController, и в AFArrayController.