Pergunta

Eu tenho algum código que precisa acessar um NSArray ao trabalho. Eu tenho um NSArray que estou usando com Core Data e terá dados nele, mas estou inseguro como fazer o meu acesso NSArrayController o NSArray.

Eu não posso simplesmente declará-lo no arquivo de cabeçalho como este: NSArray *objectArray; porque não sabem como ou onde NSArray acesso. Como exatamente eu acessar o NSArray Estou usando com Core Data?

Meu cabeçalho do arquivo:

#import <Cocoa/Cocoa.h>


@interface MyOutlineView : NSOutlineView {
    NSArrayController* objectArray;
}

@end

Minha implementação do arquivo:

#import "MyOutlineView.h"

@implementation MyOutlineView

- (void) outlineView: (NSOutlineView *) aView
     willDisplayCell: (id) aCell
      forTableColumn: (NSTableColumn *)aColumn
                item: (id) anItem
{
    id rootObj = anItem;
    unsigned row = [aView rowForItem:anItem];

    [aCell setDrawsBackground: YES];

    while ([aView levelForRow:row] != 0) {
        row --;
        rootObj = [aView itemAtRow:row];
    }

    // The colours here are foul and ugly.  Use something else, for
    // God's sake!
    if( [objectArray indexOfObject:rootObj] % 2 )
        [aCell setBackgroundColor: [NSColor yellowColor]];
    else
        [aCell setBackgroundColor: [NSColor blueColor]];
}

@end
Foi útil?

Solução

Eu fiz um aplicativo de teste com IBOutlet conectado a NSArrayController de Xib. Neste teste eu tenho:

  • iniciado a partir do núcleo modelo de aplicativo de dados;
  • criado Entidade modelo de dados com dois atributos (String, int);

em Xib:

  • Controlador da Matriz com o contexto de objeto gerenciado, ligado a Test_AppDelegate.managedObjectContext;
  • TableView com cols conectados à matriz de primeiro e segundo atributo da arrangedObjects Controladoria;
  • Adicionar e remover botões, ligados ao add matriz do Controlador: e remover: ações;
  • O botão "Show Conde" e etiqueta; -

no código (Test_AppDelegate *.):

  • IBOutlet NSArrayController * ac; (Ligado em Xib de Test_AppDelegate.ac a matriz Controller);
  • IBOutlet NSTextField * nLabel; (Ligado em Xib a etiqueta);
  • (IBAction) showNum: (id) remetente; (Conectado a partir de botão "Mostrar Contagem");
  • código em ação showNum: [NLabel setIntValue: [[arrangedObjects AC] contar]];

Eu sou capaz de:

  • Adicionar / Remover objetos para visualizar a tabela e variedade controlada;
  • Acesso NSArrayController de código para obter variedade arrangedObjects.

Assim, a ligação IBOutlet de código para matriz Controlador de Xib e acessar seus arrangedObjects deve funcionar.

Outras dicas

Eu poderia não estar recebendo este - mas você não pode simplesmente criar um método initWithArray

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top