NSPopupButton en la vista NSTableView: hacer que los enlaces funcionen

Descripción del problema

Estoy tratando de lograr algo que debería ser simple y bastante común: tener un enlace NSPopupButton rellenado dentro de los enlaces rellenó NSTableView. Apple describe esto para una tabla basada en células en su documentaciónImplementando relaciones de uno a uno usando menús emergentes y se parece a esto:

No consigo que esto funcione para una tabla basada en vistas. La ventana emergente "Autor" no se llenará a sí misma sin importar lo que haga.

Tengo dos controladores de matriz, uno para los elementos de la tabla (Artículos) y uno para los autores (Autores), ambos asociados con las entidades respectivas en mi modelo de datos central. Enlace el NSManagedPopup en mi celda de la siguiente manera en el constructor de interfaces:

Contenido ->Autores (Clave del controlador:dispuestosObjetos)Valores de contenido ->Autores (Clave del controlador:dispuestosObjetos, Modelo de ruta clave:nombre)Objeto seleccionado ->Vista de celda de tabla (Camino clave del modelo:objectValue.author

Si coloco la ventana emergente en algún lugar fuera de la mesa, funciona bien (excepto por la selección, obviamente), así que supongo que la configuración de enlace debería estar bien.

Cosas que ya he intentado

Alguien sugirió unasolución utilizando una propiedad IBOutlet alAutores controlador de matriz, pero esto tampoco parece funcionar para mí.

Enotra pregunta SO se sugirió subclasificar NSTableCellView y establecer las conexiones necesarias mediante programación. Intenté esto, pero tuve un éxito limitado.

Si configuro los enlaces de la siguiente manera:

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
    NSView *view = [tableView makeViewWithIdentifier:tableColumn.identifier owner:self];

    if ([tableColumn.identifier isEqualToString:@"Author") {
        AuthorSelectorCell *authorSelectorCell = (AuthorSelectorCell *)view;
        [authorSelectorCell.popupButton bind:NSContentBinding toObject:self.authors withKeyPath:@"arrangedObjects" options:nil];
        [authorSelectorCell.popupButton bind:NSContentValuesBinding toObject:self.authors withKeyPath:@"arrangedObjects.name" options:nil];
        [authorSelectorCell.popupButton bind:NSSelectedObjectBinding toObject:view withKeyPath:@"objectValue.author" options:nil];
    }

    return view;
}

La ventana emergente muestra la lista de posibles autores, pero la selección actual siempre se muestra como "Sin valor". Si agrego

[authorSelectorCell.popupButton bind:NSSelectedValueBinding toObject:view withKeyPath:@"objectValue.author.name" options:nil];

La selección actual está completamente vacía. La única forma de hacer que se muestre la selección actual es configurando

[authorSelectorCell.popupButton bind:NSSelectedObjectBinding toObject:view withKeyPath:@"objectValue.author.name" options:nil];

que se romperá tan pronto como seleccione un autor diferente, ya que tratará de asignar unNSString* a unaAuthor* propiedad.

¿Algunas ideas?

Respuestas a la pregunta(3)

Su respuesta a la pregunta