2011-06-11 196 views

回答

8

下面是斯威夫特更新的答案:

  • 排序可以在斯威夫特完成的幫助的關閉。有兩種方法 - sortsorted,這有助於此。

    var unsortedArray = [ "H", "ello", "Wo", "rl", "d"] 
    var sortedArray = unsortedArray.sorted { $0.localizedCaseInsensitiveCompare($1) == NSComparisonResult.OrderedAscending } 
    

    注意:這裏sorted將返回一個排序後的數組。 unsortedArray本身不會被排序。

  • 如果要排序unsortedArray本身,使用此

    ​​


參考:

  • Here是斯威夫特的排序方法的文檔。

  • Docs for different String比較方法here


可選

而不是使用localizedCaseInsensitiveCompare,這也可以這樣做:

stringArray.sort{ $0.lowercaseString < $1.lowercaseString } 

甚至

stringArray.sort{ $0 < $1 } 

我F你想有一個區分大小寫的比較

+0

謝謝,'.lowercaseString'在比較對象與標題時爲我完成了這項工作。 'mediaItems = mediaItems.sorted {$ 0.media.title.lowercaseString> $ 1.media.title.lowercaseString}' – 2015-08-25 11:22:41

0

對於我這種工作....

areas = [areas sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 

這方面是NSArray。我希望它能幫助別人。

1

很容易得到升序。按下面的步驟,,,

模型1:

NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES]; 
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]]; 

如果你想排序是不區分大小寫,您需要設置這樣的描述符,,
模型2:

NSSortDescriptor * sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)]; 
sortedArray=[yourArray sortedArrayUsingDescriptors:@[sortDesc]];