将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]
}