localizedStandardCompare
を使えば簡単に実現できるもよう。
ファイル一覧を表示する画面などで、普通に文字列比較でソートしただけでは、数字部分が1->10->2というような不自然な並びになりますが、それを自然な並びにすることができます。
import UIKit
let orgFilenames = ["aaa1", "aaa2", "aaa10", "aaa20"]
println("元の配列", orgFilenames)
let sortedFilenames1 = orgFilenames.sorted(<)
println("通常のソート", sortedFilenames1)
let sortedFilenames2 = orgFilenames.sorted {
$0.localizedStandardCompare($1) == NSComparisonResult.OrderedAscending
}
println("Finderのようなソート", sortedFilenames2)
出力結果
(元の配列, [aaa1, aaa2, aaa10, aaa20])
(通常のソート, [aaa1, aaa10, aaa2, aaa20])
(Finderのようなソート, [aaa1, aaa2, aaa10, aaa20])