NCollectionView anidado con enlaces

Estoy tratando de anidar la vista NSCollection dentro de la otra. He intentado crear un nuevo proyecto usando elGuía de inicio rápido de Apple como base

Empiezo insertando una vista de colección en mi plumilla, a la vista que se agrega automáticamente, arrastro otra vista de colección a ella. La vista de subcolección agregada obtiene algunas etiquetas. Aquí hay una foto de mi plumilla:

Luego vuelvo y construyo mis modelos: Mi modelo de segundo nivel .h es

@interface BPG_PersonModel : NSObject

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

@end

Mi modelo de primer nivel .h es:

@interface BPG_MultiPersonModel : NSObject

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

-(NSMutableArray*)setupMultiPersonArray;

@end

Luego escribo la implementación para hacer algunas personas falsas dentro del controlador de primer nivel (creando el modelo de segundo nivel): (editar) eliminar el awakefromnibcode

/*- (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;
}

Finalmente hago una implementación similar en mi appdelegate para construir la matriz multipersonal

- (void)awakeFromNib {

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

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

(No estoy incluyendo todo el código aquí, avíseme si sería útil).

A continuación, enlace todo como lo recomienda la guía de inicio rápido. Agrego dos nsarraycontrollers con atributos agregados para vincular cada nivel del controlador de matriz al objeto del controlador

A continuación, enlace la vista de colección al controlador de matriz utilizando el contenido enlazado a los objetos dispuestos

Finalmente me enlace las subvistas:

con la etiqueta grouptitle to representadoobject.grouptitle en mi modelo

luego mis etiquetas de nombre y ocupación a sus respectivos objetos representados

Hice todos los objetos compatibles con kvo incluyendo los métodos de acceso necesarios

Luego trato de ejecutar esta aplicación y el primer error que recibo es:NSCollectionView item prototype must not be nil.

(Editar) después de eliminar awakefromnib del modelo de primer nivel, obtengo esto.

¿Alguien ha tenido éxito en anidar vistas de nscollection? ¿Qué estoy haciendo mal aquí? Aquí está el proyecto completo comprimido para que otros lo prueben:

http://db.tt/WPMFuKsk

gracias por la ayuda

EDITADO:

Finalmente contacté con el soporte técnico de Apple para ver si podían ayudarme. La respuesta de ellos es:

Las encuadernaciones de cacao solo irán tan lejos, hasta que necesite un código adicional para que todo funcione.

Al utilizar matrices dentro de matrices para completar su vista de colección, los enlaces no se transferirán correctamente a cada vista replicada sin subclasificar NSCollectionView y anular newItemForRepresentedObject y crear una instancia de la misma xib, en lugar de usar la implementación de vista de replicación proporcionada por NSCollectionView.

Por lo tanto, al usar el enfoque newItemForRepresentedObject, debe tener en cuenta su NSCollectionViewItems en xibs separados para que pueda pasar el subarreglo de personas de la vista de colección de grupos a su vista de colección interna.

Por lo tanto, para la vista de su colección agrupada, su reemplazo se ve así:

- (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; 
} 

Y para su subclase de colección interna, su reemplazo se ve así:

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

Aquí hay un proyecto de muestra que me enviaron de vuelta:

http://db.tt/WPMFuKsk

Todavía no puedo conseguir que esto funcione con mi propio proyecto. ¿Se puede simplificar aún más el proyecto que enviaron?

Respuestas a la pregunta(1)

Su respuesta a la pregunta