Arrays 日期字典数组
我正在尝试创建一个字符串类型的字典数组:int。 我试图用一年(作为字符串)和0(对于所有整数)的日期初始化该数组 然而,我面临着各种各样的错误。编译器认为我的print语句不明确 我的代码: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 =
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已更新