Guard让字典解包失败

问题描述 投票:0回答:1

我一直在尝试从字典中提取一些数据。应该有5个值。第一个代码段失败,仅用1值填充scheduleForCurrentDay,而第二个代码段有效,得到所有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
        }
    }

我一直在尝试从字典中提取一些数据。应该有5个值。第一个代码段失败,仅使用1值填充scheduleForCurrentDay,而第二个代码段...

ios swift dictionary guard let
1个回答
0
投票

您可以调试此行中的值,无论是否为nil。有些可能没有currentDayComponent

© www.soinside.com 2019 - 2024. All rights reserved.