Я пытался извлечь данные из словаря. Должно быть 5 значений. Первый фрагмент кода не работает, заполняя только scheduleForCurrentDay
1 значением, тогда как второй фрагмент работает, получая все 5. Может ли кто-нибудь объяснить, почему первый не работает? Я предполагаю, что это как-то связано с копированием словаря, но я не совсем уверен.
// Fails; only gets one value
private var categories = [StudyCategory]() {
didSet {
let c = categories
for subject in c {
guard let target = subject.quota[currentDayComponent] else { continue }
scheduleForCurrentDay[subject.title] = target
}
}
}
// Succeeds; gets all 5 values
private var categories = [StudyCategory]() {
didSet {
let c = categories
var schedule = [String:Double]()
for subject in c {
schedule[subject.title] = subject.quota[currentDayComponent]
}
scheduleForCurrentDay = schedule
}
}