Frage

Ich habe einige Code, der ein NSArray arbeiten zugreifen muss. Ich habe eine NSArray, die ich mit Core Data bin mit und in ihm haben Daten, aber ich bin nicht sicher, wie mein NSArrayController Zugang der NSArray zu machen.

Ich kann nicht einfach erklären, es in der Header-Datei wie folgt aus: NSArray *objectArray;, weil sie nicht wissen, wie oder welche NSArray zugänglich. Wie genau würde ich auf den NSArray ich mit Core Data verwenden?

Meine Header-Datei:

#import <Cocoa/Cocoa.h>


@interface MyOutlineView : NSOutlineView {
    NSArrayController* objectArray;
}

@end

Meine Implementierungsdatei:

#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
War es hilfreich?

Lösung

Ich habe eine Test-App mit IBOutlet verbunden NSArrayController von Xib gemacht. In diesem Test habe ich:

  • gestartet von Core Data Anwendungsvorlage;
  • Entity mit zwei Attributen in Datenmodell erstellt (string, int);

in Xib:

  • Array-Controller mit einem verwalteten Objektkontext, der mit Test_AppDelegate.managedObjectContext;
  • Tableview mit cols verbunden Array-Controller des ersten und zweiten Attribut arrangedObjects;
  • Hinzufügen und Entfernen von Tasten, die mit Array Controller add: und entfernen: Aktionen;
  • Button "Show Count" und Aufkleber; -

in Code (Test_AppDelegate. *):

  • IBOutlet NSArrayController * ac; (Verbunden in Xib von Test_AppDelegate.ac zu Array Controller);
  • IBOutlet NSTextField * nLabel; (Verbunden in Xib Label);
  • (IBAction) showNum: (id) sender; (Verbunden von "Show Count" Taste);
  • Code in Aktion showNum: [NLabel setIntValue: [[ac arrangedObjects] count]];

Ich bin in der Lage zu:

  • Hinzufügen / Entfernen Objekte zur Tabellenansicht und kontrollierte Array;
  • Zugriff NSArrayController von Code zu arrangedObjects Array zu erhalten.

So Bindung IBOutlet von Code zu Xib der Array-Controller und den Zugriff auf seine arrangedObjects sollte funktionieren.

Andere Tipps

Ich könnte das nicht bekommen - aber kann man nicht nur eine initWithArray Methode erstellen

?
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top