我有一个配置了模式'Entity'的NSArrayController,它包含所选类型为'Person'和'Prepares Content'的Core-Data-Entities。所有其他属性都是默认属性。正如所料,当我创建新的Person-entities时(通过按钮单击),此arraycontroller更新其arrangeObjects:
-(IBAction)addEntity:(id)sender{
Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:[self managedObjectContext]];
new.text = @"text";
new.date = [NSDate date];
}
我已将基于视图的NSTableView的内容绑定到此arrayController的'arrangeObjects'属性,以显示Persons。在一列中,我有一个可编辑的(但默认情况下是默认的)NSTextField绑定到TableCellView的'objectValue.text'属性。
如果我编辑表格中的'text'属性并添加另一个人(当tablecell仍然处于编辑模式时),表将失去焦点,编辑结束并且新人将显示在表中。一切都很好。
但是如果我想添加另一个人,arrayController不会更新arrangeObjects-property(我发现不再调用arrayController的setContent:)。
这是预期的行为吗?
答案 0 :(得分:5)
我自己找到了答案。我注意到在编辑表之后没有发送NSManagedObjectContextObjectsDidChangeNotifications(就像之前一样)。
这link指出了正确的方向。在我按照以下方式修改了我的addEntity方法后,一切都按预期工作:
-(IBAction)addEintrag:(id)sender {
Person* new = [NSEntityDescription insertNewObjectForEntityForName:@"Person"
inManagedObjectContext:[self managedObjectContext]];
new.name = @"test";
new.datum = [NSDate date];
[self.managedObjectContext processPendingChanges];
}
答案 1 :(得分:0)
如果您希望arrayController自动重新排列对象,请在Interface Builder中检查arrayController上的“Auto Rearrange Content”复选框,或以编程方式使用setAutomaticallyRearrangesObjects:
。