Вложенный NSCollectionView с привязками

Я пытаюсь вложить NSCollection вид друг в друга. Я попытался создать новый проект, используяКраткое руководство по Apple в качестве базы.

Я начинаю с того, что вставляю представление коллекции в мое перо, в автоматически добавляемое представление перетаскиваю на него другое представление коллекции. Добавленное представление вложенной коллекции получает несколько меток. Вот изображение моего пера:

Затем я возвращаюсь и строю свои модели: Моя модель второго уровня .h это

@interface BPG_PersonModel : NSObject

@property(retain, readwrite) NSString * name;
@property(retain, readwrite) NSString * occupation;

@end

Моя модель первого уровня .h:

@interface BPG_MultiPersonModel : NSObject

@property(retain, readwrite) NSString * groupName;
@property(retain,readwrite) NSMutableArray *personModelArray;

-(NSMutableArray*)setupMultiPersonArray;

@end

Затем я записываю реализацию, чтобы сделать некоторых фальшивых людей в контроллере первого уровня (построение модели второго уровня): (изменить) удалить код пробуждения

/*- (void)awakeFromNib {

    BPG_PersonModel * pm1 = [[BPG_PersonModel alloc] init];
    pm1.name = @"John Appleseed";
    pm1.occupation = @"Doctor";

    //similar code here for pm2,pm3

    NSMutableArray * tempArray = [NSMutableArray arrayWithObjects:pm1, pm2, pm3, nil];
    [self setPersonModelArray:tempArray];

} */


-(NSMutableArray*)setupMultiPersonArray{
    BPG_PersonModel * pm1 = [[BPG_PersonModel alloc] init];
    pm1.name = @"John Appleseed";
    pm1.occupation = @"Doctor";

    //similar code here for pm2,pm3


    NSMutableArray * tempArray = [NSMutableArray arrayWithObjects:pm1, pm2, pm3, nil];
    return tempArray;
}

Наконец, я делаю аналогичную реализацию в моем appdelegate для создания массива multiperson

- (void)awakeFromNib {

    self.multiPersonArray = [[NSMutableArray alloc] initWithCapacity:1];

    BPG_MultiPersonModel * mpm1 = [[BPG_MultiPersonModel alloc] init];
    mpm1.groupName = @"1st list";
    mpm1.personModelArray = [mpm1 setupMultiPersonArray];

(Я не включаю весь код здесь, дайте мне знать, если это будет полезно.)

Затем я связываю все, как рекомендовано в кратком руководстве. Я добавил два nsarraycontrollers с добавленными атрибутами, чтобы связать каждый уровень контроллера массива с объектом контроллера

Затем я привязываю коллекцию к контроллеру массива, используя контент, привязанный к упорядоченным объектам

Наконец я связываю подпредставления:

с меткой группового объекта в объектеobject.grouptitle в моей модели

затем мое имя и род занятий для соответствующих им представленных объектов

Я сделал все объекты kvo совместимыми, включая необходимые методы доступа

Затем я пытаюсь запустить это приложение, и первая ошибка, которую я получаю:NSCollectionView item prototype must not be nil.

(редактировать) после удаления awakefromnib из модели первого уровня я получаю это

Кто-нибудь был успешным во вложении nscollection представлений? Что я здесь не так делаю? Вот полный проект, предназначенный для тестирования другими пользователями:

http://db.tt/WPMFuKsk

Спасибо за помощь

Редакция:

Я наконец связался со службой технической поддержки Apple, чтобы узнать, могут ли они мне помочь. Ответ от них:

Cocoa bindings will only go so far, until you need some extra code to make it all work.

When using arrays within arrays to populate your collection view the bindings will not be transferred correctly to each replicated view without subclassing NSCollectionView and overriding newItemForRepresentedObject and instantiating the same xib yourself, instead of using the view replication implementation provided by NSCollectionView.

So in using the newItemForRepresentedObject approach, you need to factor our your NSCollectionViewItems into separate xibs so that you can pass down the subarray of people from the group collection view to your inner collection view.

So for your grouped collection view your override looks like this:

- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object 
{ 
BPG_MultiPersonModel *model = object; 
MyItemViewController *item = [[MyItemViewController alloc] initWithNibName:@"GroupPrototype" bundle:nil]; 
item.representedObject = object; 
item.personModelArray = [[NSArrayController alloc] initWithContent:model.personModelArray]; 
return item; 
} 

And for your inner collection subclass your override looks like this:

- (NSCollectionViewItem *)newItemForRepresentedObject:(id)object 
{ 
PersonViewController *item = [[PersonViewController alloc] initWithNibName:@"PersonPrototype" bundle:nil]; 
item.representedObject = object; 
return item; 
}

вот пример проекта, который мне отправили обратно -

http://db.tt/WPMFuKsk

Я все еще не могу заставить это работать с моим собственным проектом. Может ли проект, который они отправили обратно, еще больше упроститься?