2014-12-13 44 views
1

我有一個這樣的數組:以String格式排序包含數組日期

["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"] 

我怎樣才能使它成爲排序是:

["Décembre", "Novembre", "Octobre", "Mars", "Février", "Janvier"] 
+0

這陣總是要包含的幾個月年? – bbarnhart 2014-12-13 02:08:05

+0

是的,它將始終是幾個月 – 2014-12-13 02:09:36

+0

這些數組項是否爲字符串「Novembre」? – bbarnhart 2014-12-13 02:12:52

回答

0

日曆月份名稱不按字母順序排列,所以你需要爲每個月提供自定義排序順序值。

var array = ["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"] 
var sortedArray = array.sorted({ 
    let dict = ["Janvier":1,"Février":2,"Mars":3,"Décembre":12,"Novembre":11,"Octobre":10] 
    return dict[$0] > dict[$1] 
}) 

println("sorted \(sortedArray)") 
+0

感謝它的工作 – 2014-12-13 02:34:47

3

幾乎是相同的,但肯定是更好地生成由規則的字典,而不是必須鍵入月份的名稱和號碼自己:

var names:[String] = [] 
if let cal = NSCalendar(calendarIdentifier: NSCalendarIdentifierGregorian) { 
    cal.locale = NSLocale(localeIdentifier: "fr") 
    names = cal.monthSymbols as [String] 
} 
var months : [String:Int] = [:] 
for (ix,name) in enumerate(names) { 
    months[name] = ix 
} 
// now we are ready 
let data = ["Novembre", "Mars", "Décembre", "Octobre", "Février", "Janvier"] 
let result = data.sorted {months[$0.lowercaseString] > months[$1.lowercaseString]} 
+0

並很好地解決了分類。 – 2014-12-13 12:44:06