2012-08-12 89 views
2

我有这个奇怪的问题,我有一个NSArrayController绑定到managedObjectContext并使用数组控制器来填充NSTableView。我可以创建一个对象并插入它,它将添加新对象并更新绑定到控制器但不是其他对象的列之一!我知道字段正在设置和绑定工作正常(可能),因为如果我关闭应用程序并重新启动应用程序,一切都正确填充。核心数据可可绑定不更新所有列

我不确定我错过了什么!我怎样才能调试绑定?从我在这里找到的: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdTroubleshooting.html#//apple_ref/doc/uid/TP40002320-SW6 它基本上只是说可能是您的控制器或关键值编码合规性。

这里是代码创建实体:

NSManagedObjectContext* context = [[BugManager shared] managedObjectContext]; 
NSError* error; 
Bug* newBug = [NSEntityDescription insertNewObjectForEntityForName:@"Bug" inManagedObjectContext:context]; 
[newBug setValuesForKeysWithDictionary:data]; 
[context save:&error]; 

我已经验证所有字段都正确设置和保存。我也试图明确设定这些值,看看它是否是一个关键的值得关注的问题,但是无济于事。

这是正确地更新所述柱:

enter image description here

这里是不正确地更新一个:

enter image description here

和阵列控制器:

enter image description here

我可以重新排列表列,它仍然只更新一个目标字段(以前更新的目标字段)。我只是想让表格正确地更新所有列,但它比预期更加困难!

回答

1

经过几小时和几个小时的抨击,我的头插入墙上,我追溯了问题不是如何设置绑定(因为它是正确的),而是实际上我的数据是如何创建的。在我用来填充对象的形式中,我有一个文本字段和一个文本视图。文本字段正常工作,但文本视图不正确。当我切换到尝试一个文本字段为它的工作以及。或者,如果我硬编码字符串文字的绑定更新正确。对我来说,修正是从文本视图创建一个明确的NSString*。如果你要求它是字符串,那么由于某种原因设置核心数据字段并没有触发通知,所以它给了我一个NSBigMutableString

所以我这样做:

NSString* description = [[NSString alloc] initWithString:[[[self descriptionField] textStorage] string]]; 

我然后使用该字符串值我的实体和一切正常,因为它应该。