ios - 在 NSUserDefaults 键中保存多个值

标签 ios swift nsuserdefaults

有什么方法可以为 NSUserDefaults 中的同一个键保存多个值吗?我似乎只保存了最后一个值,即使我有多个“日”键值。

:

for days in results! {
    let nD = DayClass()
    nD.dayOfTheWeek = days[“D”] as! String
    let defaults = NSUserDefaults.standardUserDefaults()
    defaults.setObject(nD.dayOfTheWeek, forKey: “Day”)
}

我已经尝试创建一个数组作为一种可能的解决方案,但是当我将它登录到我的控制台时,我仍然只得到最后一个值:

var emptyArray = [String]()
emptyArray.append(dayOfTheWeek)
print("Array: \(emptyArray)")
print("ArrayCount: \(emptyArray.count)")

最佳答案

你可以做到这一点。首先检查prefs中是否已经有Day数组。如果是这样,则将新的 dayOfTheWeek 添加到该数组并存储它。否则创建一个新的并存储它。

for days in results! {
    let dayOfTheWeek = days["D"] as! String
    //check if there is already an existing Day array in prefs
    if var existingArr = NSUserDefaults.standardUserDefaults().arrayForKey("Day") as? [String] {
        //if so append the new value to that array and store it
        if existingArr.contains(dayOfTheWeek) == false {
            existingArr.append(dayOfTheWeek)
            let defaults = NSUserDefaults.standardUserDefaults()
            defaults.setObject(existingArr, forKey: "Day")
            defaults.synchronize()
        }
    } else {
        //create a new array and store it
        let defaults = NSUserDefaults.standardUserDefaults()
        defaults.setObject([dayOfTheWeek], forKey: "Day")
        defaults.synchronize()
    }
}

关于ios - 在 NSUserDefaults 键中保存多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35972461/

相关文章:

ios - swift - 每像素绘制 UIView 像素的速度改进

xcode - 如何从其他类调用具有所需 init 的类?

swift - 在 Swift 4 中刷新 userdefaults

ios - 实例成员不能用于类型 - 错误

ios - Objective-C : GestureRecognizer in ViewController --> retain cycle?

ios - 快速检测任何信标的简单代码

ios - 使用 CABasicAnimation 移动时无法使用 UIButton

带有右导航箭头的 iOS 联系人样式按钮

swift - 使用 NSUserDefaults 存储 Facebook 用户详细信息

Swift 错误 : 'NSInvalidArgumentException' , 原因: '-[_SwiftValue encodeWithCoder:]: unrecognized selector sent to instance 0x60000012abe0'