簡體   English   中英

按工作日名稱swift3排序字典數組

[英]Sorting array of Dictionary by weekday name swift3

我想按工作日名稱對根數組進行排序。 就像在根數組的第一個索引上一樣,應該是星期日,星期一,星期二等等。

[{

    day = Monday;
    timingValues =     (
                {
            closeHour = 23;
            closeMin = 55;
            day = Monday;
            id = 2;
            openHour = 00;
            openMin = 00;
        }
    );
}, 

{

 day = Tuesday;

    timingValues =     (

                {
            closeHour = 00;
            closeMin = 11;
            day = Tuesday;
            id = 4;
            openHour = 12;
            openMin = 10;
        }
    );
}, {

    day = Sunday;
    timingValues =   (
                {
            closeHour = 23;
            closeMin = 07;
            day = Sunday;
            id = 5;
            openHour = 11;
            openMin = 07;
        }

);

}]

很多力量打開,但你可以得到比較的想法,還需要確保字符串是正確的,我只是在這里做1行作為參考,它不安全,在實際代碼中應該做可選檢查。

let dictArray = [["day": "Monday", "timingValues" : 1],
                     ["day" : "Tuesday", "timingValues" : 2],
                     ["day" : "Saturday", "timingValues" : 3],
                     ["day" : "Sunday", "timingValues" : 4]]
let b = dictArray.sorted(by: { DateFormatter().weekdaySymbols.index(of: ($0["day"]! as! String))! < DateFormatter().weekdaySymbols.index(of: ($1["day"]! as! String))! })

結果:

[["day": "Sunday", "timingValues": 4], ["day": "Monday", "timingValues": 1], ["day": "Tuesday", "timingValues": 2], ["day": "Saturday", "timingValues": 3]]

首先,你問題中的Dictionary格式與Swift的語法不匹配。 我認為你知道它,並且你有一個具有這種結構的正確的Swift字典。 請參閱此參考

接下來,您應該像這樣定義工作日的自定義類型(請注意,星期從星期日開始):

enum Weekday: Int {
    case sunday = 0, monday, tuesday, wednesday, thursday, friday, saturday
}

確保使用此類型創建字典作為日值的鍵。

鑒於你已經正確設置了所有東西,你應該能夠像這樣得到排序數組:

let sortedArray = initialArray.sorted { (element0, element1) -> Bool in
    guard let day0 = element0["day"] as? Weekday, let day1 = element1["day"] as? Weekday else {
        // Default behaviour in case you used wrong Weekday type or didn't set it at all 
        return false
    }

    return day0 < day1
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM