2011-10-24 53 views
0

我無法填充NSComboBox。我試圖將其綁定編程到NSArrayController以編程方式將NSComboBox綁定到NSArrayController

frequencyArrayController = [[NSArrayController alloc] initWithContent:nil]; 
[frequencyArrayController setManagedObjectContext:[[NSApp mainWindowDocument] managedObjectContext]]; 
[frequencyArrayController setEntityName:@"Frequency"]; 
[frequencyArrayController fetch:self]; 
[frequencyComboBox bind:@"contentValues" toObject:frequencyArrayController withKeyPath:@"arrangedObjects.DisplayName" options:nil]; 

我缺少什麼?

該字段位於NSPanel,該應用程序啓動時尚未打開。我綁定它並提前加載筆尖,這是一個問題嗎?

回答

2

您需要告訴您的陣列控制器在某個時刻獲取:

編輯:這是我使用的測試示例代碼:

arrayController = [[NSArrayController alloc] init]; 
    [arrayController setManagedObjectContext:self.managedObjectContext]; 
    [arrayController setEntityName:@"Entity"]; 
    [comboBox bind:@"contentValues" toObject:arrayController   
     withKeyPath:@"arrangedObjects.name" options:nil]; 
    [arrayController fetch:self]; 

    [[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
     NSLog(@"%@", comboBox.objectValues); 
    }]; 

檢查您的MOC和IBOutlets是不爲零。

+0

我試過這個沒有結果:[frequencyArrayController fetch:self]; – aneuryzm

+0

您是否已驗證數組控制器在獲取命令後實際上是否已填充? (注意:對象不會立即獲取,您必須在下一個運行循環中進行測試)它在我的測試應用程序中工作。 –

相關問題