2012-11-11 26 views
2

我有一個包含許多不同類型的對象的NSSet。通常它將包含NSDictionaries,NSStrings,NSArrays和Classes的一些組合,即Objective-c「Class」類型。我需要一種方法來生成一個NSArray,其中包含此NSSet中的所有對象,但要進行排序,以便對於包含相同對象的任何集合,它總是以相同的順序排列。具體來說,「同一個對象」是指價值而不是地址。只要它是一致的,它如何排序並不重要。如何從包含任意對象的NSSet創建排序的NSArray?

我還沒有找到一種方法來做到這一點。我找不到在兩個任意對象之間進行有序比較的方法。有沒有人有任何建議如何做到這一點?

+2

你可以使用對象的'hash',然後對於任何碰撞,也許你可以通過對象類''hash'進行排序 –

+0

@ Paul.s什麼'hash'?你在想Java嗎? – trojanfoe

+2

@trojanfoe'hash'被定義爲'NSObject'協議的一部分 - 參見https://developer.apple.com/library/mac/documentation/Cocoa/Reference/Foundation/Protocols/NSObject_Protocol/Reference/NSObject.html# // apple_ref/occ/intfm/NSObject/hash - 它被'NSDictionary'等人使用。 – Tommy

回答

2

所有對象都來自NSObject,因此您可以簡單地按[NSObject description]reference)排序,這將是對象內容的摘要。

編輯:正如@ Paul.s在評論中指出的那樣; hashreference)是要走的路(比較快)。

+0

......並且他想確保他已經在任何自定義類上實現了「描述」,這樣就不會通過指針間接進行比較。 – Tommy

+0

@Tommy他在他的問題中沒有提到習慣課,只有標準課。 – trojanfoe

+0

我跳過了他對'典型'這個詞的使用。 – Tommy

相關問題