Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 日期字典数组_Arrays_Swift_Date_Dictionary - Fatal编程技术网

Arrays 日期字典数组

Arrays 日期字典数组,arrays,swift,date,dictionary,Arrays,Swift,Date,Dictionary,我正在尝试创建一个字符串类型的字典数组:int。 我试图用一年(作为字符串)和0(对于所有整数)的日期初始化该数组 然而,我面临着各种各样的错误。编译器认为我的print语句不明确 我的代码: class Dates { static func printDatesBetweenInterval(_ startDate: Date, _ endDate: Date) -> [Dictionary<String, Int>] { var details =

我正在尝试创建一个字符串类型的字典数组:int。 我试图用一年(作为字符串)和0(对于所有整数)的日期初始化该数组

然而,我面临着各种各样的错误。编译器认为我的print语句不明确

我的代码:

class Dates {
    static func printDatesBetweenInterval(_ startDate: Date, _ endDate: Date) -> [Dictionary<String, Int>] {
        var details = [Dictionary<String, Int>]()
        var startDate = startDate
        let calendar = Calendar.current

        let fmt = DateFormatter()
        fmt.dateFormat = "yyyy-MM-dd"

        while startDate <= endDate {
            let sDate =  fmt.string(from: startDate)
            print (sDate)
            details.append([sDate : 0])
            startDate = calendar.date(byAdding: .day, value: 1, to: startDate)!
        }

        return details
    }

    static func dateFromString(_ dateString: String) -> Date {
        let dateFormatter = DateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd"
        return dateFormatter.date(from: dateString)!
    }
}

struct Attendee {
    var masterStudentdetails = [Dictionary<String, Int>]()

    init() {
        masterStudentdetails = Dates.printDatesBetweenInterval(Dates.dateFromString("2018-08-22"), Dates.dateFromString("2019-08-20"))
        for (dayStr, trackNum) in masterStudentdetails {
            print(dayStr) //This line is causes error.
        }
    }
上课日期{
静态func打印日期间隔(uuTDate:Date,uEndDate:Date)->[字典]{
变量详细信息=[Dictionary]()
var startDate=startDate
让calendar=calendar.current
设fmt=DateFormatter()
fmt.dateFormat=“yyyy-MM-dd”
当开始日期{
让dateFormatter=dateFormatter()
dateFormatter.dateFormat=“yyyy-MM-dd”
返回dateFormatter.date(from:dateString)!
}
}
结构与会者{
var masterStudentdetails=[Dictionary]()
init(){
masterStudentdetails=日期。打印日期间隔(Dates.dateFromString(“2018-08-22”)、Dates.dateFromString(“2019-08-20”))
对于masterStudentdetails中的(dayStr,trackNum){
print(dayStr)//此行不正确。
}
}

masterStudentDetails
是一个字典数组。因此,您的
for in
给出的结果是
[String:Int]
,而不是键值对

您需要迭代数组,然后迭代每个字典中的键值对

init() {
    masterStudentdetails = Dates.printDatesBetweenInterval(Dates.dateFromString("2018-08-22"), Dates.dateFromString("2019-08-20"))
    for dictionary in masterStudentdetails {
        for (dayStr, trackNum) in dictionary.enumerated() {
            print(dayStr)
        }
    }
}
但由于每个字典中只有一个键值对,因此可以执行以下操作:

init() {
    masterStudentdetails = Dates.printDatesBetweenInterval(Dates.dateFromString("2018-08-22"), Dates.dateFromString("2019-08-20"))
    for dictionary in masterStudentdetails {
        if let pair = dictionary.first {
            print(pair.key)
        }
    }
}

您试图在函数作用域之外执行代码。您需要在函数中的
var masterStudentdetails=[Dictionary]()
后面包装所有行。它实际上在init func中--我的错误。Post已更新