Xcode - 将文本字段绑定到Swift字典的元素

时间:2016-09-21 19:09:26

标签: swift xcode binding interface-builder

我确实通过界面构建​​器将文本字段绑定到Swift字典值。在文本字段中,从字典中提取正确的值并显示在文本字段中。

当我通过

更改dict中元素的值时
myDict["Textfield1"] = "New value"

在文本字段中看不到更改。 当我将textfield的值绑定到类的属性时,对该属性的任何更改都会立即显示在文本字段中。 我错过了什么吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

所以基本上,它不会起作用。绑定通过使用KVO / KVN系统工作,该系统在Obj-C对象更改其值时发送通知。它非常聪明,但他们没有把它移植到Swift。除此之外,Swift中的字典是值类型。

“解决方案”是确保你绑定的东西有KVO。所以你可以做几件事。第一个是创建自己的类并从NSObject继承它,并且presto,你获得KVO。 Here's a page关于如何做到这一点。

但更好的方法是在Swift集合dynamic上使用myDict关键字。这会触发到Obj-C的桥接,因此你得到了KVO。现在我还没有使用Swift dict,所以我不确定会发生什么。您可能必须使myDict成为NSDictionary。但这只是一个小改动,所以一定要试试dynamic