我使用可可綁定來綁定NSTableView
到Core Data
像下面什麼是自動準備內容和自動重新排列NSArrayController的對象?
_arrayController = [[MyArrayController alloc] init];
[_arrayController setEntityName:@"User"];
[_arrayController setManagedObjectContext:self.managedObjectContext];
[_arrayController setUsesLazyFetching:NO];
[self.tableView bind:NSContentBinding toObject:self.arrayController withKeyPath:@"arrangedObjects" options:nil];
[_arrayController fetch:nil];
,一切似乎運作良好。
但有一點我不明白的是automaticallyPreparesContent
和automaticallyRearrangesObjects
屬性NSArrayController的影響。根據該文件,默認情況下,這兩者都是NO
,我也沒有更改它們。 Doc說
如果標誌爲YES和被管理對象的上下文被設置時,使用當前取謂詞初始內容是從被管理對象的上下文中取出。控制器也註冊爲其管理對象上下文的觀察者。然後使用上下文的通知來跟蹤其實體的插入和刪除,並根據需要更新其內容數組。
我認爲這意味着,如果該標誌爲NO,則內容數組不會更新爲新插入的對象到託管對象上下文。但是,當我將新的託管對象插入托管對象上下文時它會更新。我誤解了什麼?
而且,關於automaticallyRearrangesObjects
Doc說
把接收機是否自動重新排列其內容對應於當前的排序描述符和過濾謂詞。
這意味着,如果標誌爲NO,即使數組控制器的排序描述符或過濾器謂詞發生更改,內容也不會重新排列。但它是!當我更改過濾器謂詞或排序描述符時,將重新排列綁定到數組控制器的表視圖上的行。
我很困惑我不知道或誤解了NSArrayController的行爲。
如果我禁用「準備內容」,我是否需要編寫代碼或仍然可以使用接口構建來獲取數據? (在我的情況下,NSArrayController綁定到一個NSComboBoxCell) – aneuryzm