我希望這是一個普遍的問題,一個相當廣泛的問題可能會有一個明顯的答案。爲什麼我的NSTableView
- 在應用程序加載後 - 有時會填充來自其連接的數據源(核心數據)的數據,有時會爲空。它似乎是隨機的。退出和開始之間沒有任何變化。NSTableview在啓動時是隨機清空的
的幫助:
- 的
NSTableView
數據源是一個NSArrayController
綁定了一個實體核心數據模型managedObjectContext
。 NSTableView
和NSArrayController
都正確連接到插座和綁定。調試已經成功地進行了我所想到的任何測試,並且它隨機工作的事實表明某些工作正在進行。- 我打算假設問題是我的項目的一個元素,有時會在時間上加載,而沒有及時加載。我也曾假設在
NSArrayController
之前沒有在完成加載之前及時獲取其數據。我試圖通過詢問NSTableView
到reloadData
的NSArrayController
加載完成後,以糾正這個:
[jobsController addObserver:self forKeyPath:@"arrangedObjects.jobTitle" options:0 context:nil];
和
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {
if (object == jobsController)
{
NSLog(@"jobsController finished loading");
[tableView reloadData];
}
}
我使用一個獨立的測試按鈕爲NSTableView
觸發reloadData
還測試每當我點擊它。這沒有效果。對缺乏代碼抱歉。該項目相當龐大,很難將代碼隔離到這個問題上。我希望這個問題很普遍,以至於答案可能會從類似的經驗中得到確定。
更新
我很有信心,它是與沒有準備好NSArrayController
的(作爲日誌的arrangedObjects
揭示一個空集時表不填充,反之亦然做當它的時候)。爲了擴大我的設置,我還有另外兩個NSArrayController
(總共3個)。填充NSTableView
的控制器是另一個控制器的子控件。我有一個理論,只有當NSArrayControllers的加載順序是(巧合)parent> parent> parent時,該表纔會填充,因爲每個子對其內容集依賴其父NSArrayController
。也許我的解決方案是手動選擇控制器的加載順序?
謝謝,這不幸的是不是答案,但很好的建議。 – biscuitstack 2011-03-12 12:00:26