Как заполнить табличное представление словарем, соответствующим ключу даты - PullRequest
0 голосов
/ 07 апреля 2020

Заголовок сбивает с толку, я знаю, но у меня есть словарь с ключом даты (строки) и текстом события в качестве значения.

Как мне сначала выяснить, какие ключи соответствуют дате в течение следующих 30 дней, а затем заполнить мое табличное представление какими-либо парами ключ / значение, которые находятся в течение этих 30 дней?

1 Ответ

0 голосов
/ 07 апреля 2020

Вы можете получить текущую дату с помощью календаря, чтобы получить текущий месяц и день от вашей текущей даты.

let date = Date()
let calendar = Calendar.current
var month = 0
var day = 0

Как только вы получите, я создал [String]() для хранения всех KEYS, что будет соответствовать вашему словарю. Затем я создал al oop для подсчета дней 1 - 30 и добавления каждой даты в этот массив для вашей справки со словарем. Важно использовать .date(byAdding:...), чтобы вы могли учитывать месяцы, которые могут иметь 28, 30 или 31 день.

var datesToPull = [String]()
for futureDay in 1...30{
    let toDate = Calendar.current.date(byAdding: .day, value: futureDay, to: date)
    month = calendar.component(.month, from: toDate!)
    day = calendar.component(.day, from: toDate!)

    // We have to format the days to a XX/XX value to handle your key requirements. 
    datesToPull.append("\(String(format: "%02d", month))/\(String(format: "%02d", day))")
}

, если вы хотите считать сегодня также 1023 *, просто измените свой l oop на этот

for futureDay in 0...30{...

Наконец, чтобы что-то сделать с этими ключами, поместите это внутри вашего tableView(_ cellForRowAt:...) метода или там, где вам это нужно.

for key in calendarDataSource.keys{
    if datesToPull.contains(key){
        print("Date Found.")
    }
    else{
        print("No date found.")
    }
}

Примечание

Это не сохранит какого-либо порядка. Что не должно иметь значения из-за использования словаря, но на тот случай, если вы не знали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...