在即時假設這是重複的之前,請繼續閱讀。可以使用NSSortComparator對NSMutableOrderedSet <NSString*>進行排序嗎?
我想以高效的方式對大型NSMutableOrderedSet<NSString*>
進行排序。
我知道如何使用NSSortComparator
對NSMutableOrderedSet<SomeObject*>
進行排序,並將密鑰設置爲SomeObject
的相關成員。
我也知道如何使用sortedArrayUsingSelector:@selector(compare:)
使用sortUsingComparator:^(id firstObject, id secondObject).
我也知道如何排序的數組,例如,NSNumber
排序的SomeObject
數組但我想不出是怎麼當項目是天然的OBJ-C的對象,如NSString的,而不是用戶定義的對象進行排序的NSMutableOrderedSet
:
NSortComparator
使用密鑰,但是不存在如果設置的內容是NSString
而不是自定義對象,那麼鍵?所以這不能用? (我注意到NSSortComparator
有一個SEL
財產,因此我認爲它可能被設置爲NSString:compare
,但它的只讀)。- 我發現使用
sortUsingComparator
很慢(幾秒鐘)排序大型數組(大約50,000個項目),但使用NSSortComparator
幾乎可以瞬時排序包含相同類型元素的NSMutableOrderedSet
。因此,如果速度較慢,我不想使用sortUsingComparator進行排序。 - 我看不到
NSMutableOrderedSet
的方法,如sortedArrayUsingSelector
。
所以我的問題是我怎麼能以高效的方式排序的集合,如果我不能使用,如果sortDescriptor
和sortUsingComparitor
是慢?
我可以創建一個包含什麼DummyObject
而是NSString
,並有NSMutableOrderedSet<DummyObject*>
,然後使用排序NSSortComparator
,但似乎瘋了,所以必須有一個更簡單的方法,但我不能看到從API文檔,也不是什麼也沒有過去的問題
@rmaddy不,它不是。如果例如「xxx」,「aaa」,「ddd」等字符串按照該順序使用addObject添加,然後如果該集合被迭代,則它們與添加時的順序相同。添加一個字符串時,該集不會自動排序。使用setObject:atIndex將確保插入時的排序,但這不是我問題的一部分,我想知道如何在使用addObject之後對它們進行排序。 – Gruntcakes
您應該能夠將'@「self」'作爲關鍵字傳遞給排序描述符。我認爲'nil'也可以。 – dan
@二氧化氯哎呀。瞬間失效。 – rmaddy