Как я могу использовать NSArray и NSArrayController с Core Data? - PullRequest
0 голосов
/ 21 июня 2009

У меня есть код, которому нужен доступ к NSArray для работы. У меня есть NSArray, который я использую с Core Data, и в нем будут данные, но я не уверен, как заставить мой NSArrayController обращаться к NSArray.

Я не могу просто объявить это в файле заголовка следующим образом: NSArray *objectArray;, потому что он не знает, как или к чему NSArray получить доступ. Как именно я получу доступ к NSArray, который я использую с Core Data?

Мой заголовочный файл:

#import <Cocoa/Cocoa.h>


@interface MyOutlineView : NSOutlineView {
    NSArrayController* objectArray;
}

@end

Мой файл реализации:

#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

Ответы [ 2 ]

0 голосов
/ 24 июня 2009

Возможно, я не получаю это, но вы не можете просто создать метод initWithArray?

0 голосов
/ 23 июня 2009

Я сделал тестовое приложение с IBOutlet, подключенным к NSArrayController из Xib. В этом тесте у меня есть:

  • запущено из шаблона приложения Core Data;
  • созданный объект в модели данных с двумя атрибутами (string, int);

в Xib:

  • Контроллер массива с контекстом управляемого объекта, подключенным к Test_AppDelegate.managedObjectContext;
  • TableView с столбцами, подключенными к первому и второму атрибуту Array Controller для selectedObjects;
  • Кнопки «Добавить и удалить», связанные с контроллером массива: добавить и удалить: действия;
  • Кнопка «Показать счетчик» и метка; -

в коде (Test_AppDelegate. *):

  • IBOutlet NSArrayController * ac; (подключен в Xib из Test_AppDelegate.ac к контроллеру массива);
  • IBOutlet NSTextField * nLabel; (подключен в Xib к метке);
  • (IBAction) showNum: (идентификатор) отправитель; (подключается с помощью кнопки «Показать счетчик»);
  • код в действии showNum: [nLabel setIntValue: [[acagedObjects] count]];

Я могу:

  • Добавить / удалить объекты в табличном представлении и управляемом массиве;
  • Доступ к NSArrayController из кода для получения массива упорядоченного объекта.

Таким образом, привязка IBOutlet из кода к контроллеру массива Xib и доступ к его упорядоченным объектам должны работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...