Массив словаря для дат - PullRequest
0 голосов
/ 30 мая 2018

Я пытаюсь получить массив словарей типа строка: int.Я пытаюсь инициализировать этот массив с датами для года (в виде строки) и 0 (для всех целых).

Однако я сталкиваюсь с различными ошибками.Компилятор считает, что мое утверждение печати неоднозначно.

Мой код:

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.
        }
    }

1 Ответ

0 голосов
/ 30 мая 2018

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)
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...