Настройка NSTreeCcontroller для NSOutlineView с использованием CoreData

Моя модель выглядит так:

модель

В моем тестовом проекте есть два следующих метода:

- (void) addChildWithName:(NSString*)name toParent:(Item*)parent
{
    static NSUInteger count = 1;

    Item*   childItem;


    childItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[self managedObjectContext]];
    [childItem setName:[NSString stringWithFormat:@"%@ %lu", name, count]];
    [childItem setParent:parent];

    count++;
}



- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
    [super windowControllerDidLoadNib:aController];
    // Add any code here that needs to be executed once the windowController has loaded the document's window.


    Item*   rootItem;

    rootItem = [NSEntityDescription insertNewObjectForEntityForName:@"Item" inManagedObjectContext:[self managedObjectContext]];
    [rootItem setName:@"rootItem"];

    [self addChildWithName:@"rootChild" toParent:rootItem];
    [self addChildWithName:@"rootChild" toParent:rootItem];
    [self addChildWithName:@"rootChild" toParent:rootItem];
    [self addChildWithName:@"rootChild" toParent:rootItem];
    [self addChildWithName:@"rootChild" toParent:rootItem];
}

В результате появится представление схемы, которое выглядит следующим образом:

результат

Для моего объекта контроллера дерева в xib я установил для пути дочернего ключа значение «дочерний». Контекст управляемого объекта (moc) привязан к moc владельцев файлов. Столбец «Значение таблицы» моего представления схемы привязан к аранжированным объектам NSTreeController с путем к ключу модели «имя».

Как видите, я получаю повторяющиеся записи для дочерних элементов, когда они должны появляться только под корневым элементом.

Что я делаю неправильно?

Пример проекта находится по адресу ссылка на пример проекта.

Спасибо.


person ericg    schedule 03.02.2013    source источник


Ответы (1)


Контроллеру массива требуется «Предикат выборки», чтобы выбирать только объекты Item, когда атрибут parent равен нулю, используя parent == nil.

person Fruity Geek    schedule 03.02.2013
comment
Итак, вы говорите, что моему NSTreeController в инспекторе атрибутов необходимо установить значение для предиката выборки в разделе контроллера объектов? Как будет выглядеть этот предикат Fetch? - person ericg; 04.02.2013