将Swift属性绑定到NSTableView?

将Swift属性绑定到NSTableView?,swift,nsdictionary,nstableview,Swift,Nsdictionary,Nstableview,我想我已经把自己安排到了一个角落,但我希望你们都知道一条出路。我有一节课 class Card { var order: Int? = -1 var tag: String = "0" var comment: String? var data : [String: NSNumber] } 理想情况下,所有内容都在数据中,即一些字符串和大量数字。我从[String,String]开始,但当我想(比如)将其中一个数字与零进行比较时,我发现我正在编写大量的代码进行转

我想我已经把自己安排到了一个角落,但我希望你们都知道一条出路。我有一节课

class Card {
    var order: Int? = -1
    var tag: String = "0"
    var comment: String?
    var data : [String: NSNumber]
}
理想情况下,所有内容都在
数据中
,即一些字符串和大量数字。我从
[String,String]
开始,但当我想(比如)将其中一个数字与零进行比较时,我发现我正在编写大量的代码进行转换。将其更改为
[String,NSNumber]
简化了所有代码,但现在我的tableViewDataSource变得非常复杂,因为一些数据位于
数据中,而另一些数据位于单独的属性中,如
注释中。我甚至尝试了
[String,Any]
,但是为了做任何事情,所有的东西都必须一直被强制转换


我有一种感觉,我在这里错过了一些基本的东西。使用NStableView时,是否有一种简单的方法可以使用我缺少的Swift属性?valueForKey:不起作用,我知道没有简单的方法可以实现类似于反射的解决方案,等等。有什么建议吗?

您只能绑定
动态
属性,并且您的类需要继承自
NSObject
或实现
NSObjectProtocol
。此外,不允许使用可为零的值类型,因此不能绑定
Int?

即:


那么,我对使用NSObject和dynamic使valueForKey工作的理解正确吗?如果是这样的话,这是一个很好的解决方案,也是我以前应该偶然发现的。
class Card: NSObject {
    dynamic var order: Int = -1
    dynamic var tag: String = "0"
    dynamic var comment: String?
    dynamic var data: [String: NSNumber]
}