我确实通过界面构建器将文本字段绑定到Swift字典值。在文本字段中,从字典中提取正确的值并显示在文本字段中。
当我通过
更改dict中元素的值时myDict["Textfield1"] = "New value"
在文本字段中看不到更改。 当我将textfield的值绑定到类的属性时,对该属性的任何更改都会立即显示在文本字段中。 我错过了什么吗?
谢谢!
答案 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
!