2011-05-09 67 views
0

我正在創建一個NSTableView &使用代理&數據源鏈接到類我氾濫的表。在類中,我使用NSMutableArray來存儲表的值。我可以在表格中進行排序嗎?我怎樣才能做到這一點。我想根據列中的值進行排序。 我現在用的那種哎&選擇,但是當我跑我得到這個錯誤 [<NSCFString 0x18da00> valueForUndefinedKey:]: this class is not key value coding-compliant for the key name.排序在NSTableView

如何解決這個問題。

回答

3

您可以通過兩種方法之一來解決此問題。如果您不確定自己在做什麼,那麼更簡單的方法就是簡單地對您的內容數組進行排序。您可以使用NSMutableArray-sort...:方法對其進行排序,結果將顯示在表格中排序。但是,「更好」的方法是使用NSSortDescriptor(可以通過代碼或通過Interface Builder設置)來自行排序表輸出。要獲得一個排序描述符來處理自定義類,你必須使它們符合KVC規範,但幸運的是,你只能使用NSString s,所以這項工作已經完成了。無論是在Interface Builder中,還是在代碼中,將排序描述符的鍵設置爲self(因爲您正在比較字符串本身,而不是它們的實例變量),並將選擇器設置爲compare:(因爲您只需進行簡單的比較;而NSString實現這個方法)。這很容易在Interface Builder中完成(一旦你設置了self作爲密鑰,compare:甚至會爲你彈出),但如果你想要創建一個複雜的排序描述符,你必須在代碼中完成。

+0

謝謝,但我使用一列作爲NSString&其他是一個int。使用自我我能夠排序,但另一列無法正常工作。 – 2011-05-09 13:49:26

+1

它們是相互關聯的嗎?單行是重要的,還是隻需要從最小到最大排序?如果他們只是需要訂購,這不難做到,但如果行本身相關,那麼您將不得不做一些更困難的工作。 – 2011-05-09 23:35:48

+0

感謝您的幫助...是的,他們是相關的。但我通過排序我使用的NSMutableArray找到了一個解決方案。 – 2011-05-10 04:34:16

2

它看起來像你的表中的值是NSStrings。您需要選擇NSString作爲響應的內容。關鍵self可能會訣竅。