繁体   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