第二个数组项被删除

Second Array item gets removed

我正在从 CloudKit 中提取数据以放入数组中。

我有3个项目可以拉取:MondayTuesdayWednesday

我将它们放入 existingArray,但是当我 运行 应用程序时,我得到:["Monday", "Tuesday"],然后当它 运行 第二次时,我得到["Monday", "Wednesday"],我不明白为什么?

    for days in results! {
        let nD = DayClass()
        nD.dayOfTheWeek = days[“D”] as! String
        let defaults = NSUserDefaults.standardUserDefaults()
            if var existingArr = defaults.arrayForKey("D") as? [String] {
                if existingArr.contains(days["D"] as! String) == false {
                    existingArr.append(nd.dayOfTheWeek)
                }
            } else {
                defaults.setObject([nD.dayOfTheWeek], forKey: "D")
            }
        }

编辑:如果我在附加后添加 defaults.setObject([nD.dayOfTheWeek], forKey: "D")existingArray 会变成 ["Monday", "Tuesday"],然后 ["Tuesday", "Wednesday"]。我无法将所有 3 项都保留在 existingArray.

您需要在 append 之后将 existingArr 保存回默认值。沿着:

for days in results! {
    let nD = DayClass()
    nD.dayOfTheWeek = days[“D”] as! String
    let defaults = NSUserDefaults.standardUserDefaults()
        if var existingArr = defaults.arrayForKey("D") as? [String] {
            if existingArr.contains(days["D"] as! String) == false {
                existingArr.append(nd.dayOfTheWeek)
                defaults.setObject(existingArr, forKey: "D")
            }
        } else {
            defaults.setObject([nD.dayOfTheWeek], forKey: "D")
        }
    }