我的AppDelegate包含一个字典。我有NSDictionaryController
绑定到dict
。然后我将NSTableView
的2列绑定到词典控制器:
arrangedObjects
。模型关键路径= key
arrangedObjects
。模型关键路径= value
但我的桌子是空白的。知道如何纠正这个问题吗?
我的代码:
class AppDelegate {
dynamic var dict = NSMutableDictionary()
func applicationDidFinishLaunching(aNotification: NSNotification) {
dict.setValue(1, forKey: "One")
dict.setValue(2, forKey: "Two")
}
}
我也尝试过:
let newObject = dictController.newObject()
newObject.setKey("One") // deprecated
newObject.setValue(1) // deprecated
dictController.addObject(newObject)
但Xcode表示{10}中不推荐使用setKey
和setValue
。如何将对象添加到NSDictionaryController
?我正在运行Mac OS X 10.11.4。
答案 0 :(得分:0)
字典控制器没有看到dict
内的变化。您可以通过先构建字典然后分配到dict
来解决此问题。
func applicationDidFinishLaunching(aNotification: NSNotification) {
var tempDict = NSMutableDictionary()
tempDict.setValue(1, forKey: "One")
tempDict.setValue(2, forKey: "Two")
dict = tempDict
}
另一个解决方案是实现键值观察器合规性。
func applicationDidFinishLaunching(aNotification: NSNotification) {
willChangeValueForKey("dict")
dict.setValue(1, forKey: "One")
dict.setValue(2, forKey: "Two")
didChangeValueForKey("dict")
}
感谢@Code不同让我意识到问题所在。
答案 1 :(得分:-1)
NSDictionaryController
的小秘密在于必须通过includedKeys
属性指定包含的键列表。否则,arrangedObjects
内没有任何内容。最简单的方法是将includedKeys
绑定到您的dict.keys
属性。
在Interface Builder中:
编程:
dictController.bind(NSIncludedKeysBinding, toObject: self, withKeyPath: "dict.keys", options: nil)