私のモデルは次のようになります。
私のテスト プロジェクトでは、次の 2 つの方法があります。
- (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 のツリー コントローラー オブジェクトでは、Children Key Path を「children」に設定しました。管理オブジェクト コンテキスト (moc) は、ファイル所有者の moc にバインドされます。アウトライン ビューのテーブル列の値は、「名前」のモデル キー パスを持つ NSTreeController の ArrangeObjects にバインドされています。
ご覧のとおり、ルート アイテムの下にのみ表示されるはずの子アイテムのエントリが重複しています。
私は何を間違っていますか?
サンプル プロジェクトは、サンプル プロジェクトのリンクにあります。
ありがとうございました。