2015-12-27 48 views
1

我想我已將自己編入了一個角落,但我希望你們都知道一條出路。我有一個類...將Swift屬性綁定到NSTableView?

class Card { 
    var order: Int? = -1 
    var tag: String = "0" 
    var comment: String? 
    var data : [String: NSNumber] 
} 

理想的一切都將是在data,這是弦數和許多數字。我從[String, String]開始,但是我發現我正在寫很多代碼來進行投射和轉換,當我想(比如)將其中一個數字與零比較時。更改爲[String, NSNumber]簡化所有代碼,但現在我的tableViewDataSource變得非常複雜,因爲有些數據位於data,有些位於comment之類的單獨屬性中。我甚至嘗試過[String, Any],但隨後一切都必須施展才能做任何事情。

我有一種感覺,我在這裏失去了一些基本的東西。在使用NSTableViews時,有沒有簡單的方法來使用我缺少的Swift屬性? valueForKey:不起作用,有沒有簡單的方法來做我知道的類似反射的解決方案,等等。有什麼建議嗎?

回答

2

您只能綁定dynamic屬性,並且您的類需要從NSObject繼承或實現NSObjectProtocol。此外,nilable值類型是不允許的,所以你不能綁定Int?

即:

class Card: NSObject { 
    dynamic var order: Int = -1 
    dynamic var tag: String = "0" 
    dynamic var comment: String? 
    dynamic var data: [String: NSNumber] 
} 
+0

所以我在理解是正確的使用NSObject的和動態的,使valueForKey工作?如果是的話,這是一個很好的解決方案,而且我現在應該已經發現了這個解決方案。 –