Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 绑定到数组控制器的文本字段不会更改数组中的值_Objective C_Cocoa_Macos_Nsarraycontroller_Nstextfield - Fatal编程技术网

Objective c 绑定到数组控制器的文本字段不会更改数组中的值

Objective c 绑定到数组控制器的文本字段不会更改数组中的值,objective-c,cocoa,macos,nsarraycontroller,nstextfield,Objective C,Cocoa,Macos,Nsarraycontroller,Nstextfield,我有一个文本字段,用于显示从其他几个文本字段计算出的“总成本”。当我得到ControldEndediting:时,我计算此总成本,并使用setDoubleValue:将其放入总成本字段。我将Total Cost字段的值绑定到阵列控制器,如果我手动更改该字段的值,则它将保存到控制器的阵列中。但是,如果以编程方式执行此操作,则字段的显示将更改,但表中显示的数组和值不会更改 原因是什么?如果您有一个绑定控件,比如一个textField,那么使用setStringValue:之类的方法更改它的状态将不会

我有一个文本字段,用于显示从其他几个文本字段计算出的“总成本”。当我得到
ControldEndediting:
时,我计算此总成本,并使用
setDoubleValue:
将其放入总成本字段。我将Total Cost字段的值绑定到阵列控制器,如果我手动更改该字段的值,则它将保存到控制器的阵列中。但是,如果以编程方式执行此操作,则字段的显示将更改,但表中显示的数组和值不会更改


原因是什么?

如果您有一个绑定控件,比如一个textField,那么使用setStringValue:之类的方法更改它的状态将不会触发绑定机制将更改推送到绑定目标。这只是绑定设计的一部分。如果希望以编程方式有效地更改textField的值,则需要在模型对象中使用绑定到的键的setter或使用setValue:forKey来更改它。因此,如果您将nameTextField绑定到person.name,则需要调用[person setName:newName]或[person setValue:newName forKey:@“name”]。

谢谢你,伙计,你给我的答案就是这样的。但是我的属性类型有问题!这是NSNumber类型,此设置值为:forkeypath不接受长、整数、浮点等。因此,我使用以下方法解决问题:
[PurchaseArray设置值:[NSNumber numberWithInt:sum]forkeypath:@“selection.purchaseTotal”]其中sum是整数类型。是的,通常KVO/KVC会自动为您装箱和取消装箱原语类型。