我正在从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中。

最佳答案

existingArr之后,您需要将append恢复为默认值。遵循以下原则:

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")
        }
    }

关于ios - 第二个数组项被删除,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36000373/

10-10 20:48