Swift 将值添加到现有用户默认值

Posted

技术标签:

【中文标题】Swift 将值添加到现有用户默认值【英文标题】:Swift Adding Value to Existing User Defaults Value 【发布时间】:2016-10-13 04:19:08 【问题描述】:

例如,我使用“abc”键获得了用户默认值,它包含一个字符串。

此键中存储的最后一个字符串是“aaa”。

现在,我想为这个键存储一个附加值,但我不想删除最后一个值“aaa”,因为我需要它。

我希望在第二次检索时包含一个字符串数组:["aaa","some_other_value", "some_other_value2"...]。

到目前为止,这是我将信息存储在用户默认值中的代码:

self.user_defaults.set(self.myTextField.text, forKey:"asd")

这是获取数据的代码:

if let arr = user_defaults.string(forKey:"asd")
    print (arr)

【问题讨论】:

如果你想存储一个数组,为什么只存储一个String 您可以使用 plist 代替 userdefaults。并且每次都更新它 【参考方案1】:

尝试使用以下代码保存新值:

if let arr = user_defaults.array(forKey: "asd")
        
            var arrvalues = arr as! [String]
            arrvalues.append(self.myTextField.text)
            self.user_defaults.set(arrvalues, forKey:"asd")
            self.user_defaults.synchronize()
            print (arr)
        
        else
        
            self.user_defaults.set([self.myTextField.text], forKey:"asd")
        

这是获取数据的代码:

if let arr = user_defaults.array(forKey:"asd")
    print (arr)

【讨论】:

【参考方案2】:
    let asdArr = [String]()
    if NSUserDefaults.standardUserDefaults().objectForKey("asd") != nil 
      asdArr = NSUserDefaults.standardUserDefaults().objectForKey("asd")
    
    asdArr.append(self.myTextField.text)
    NSUserDefaults.standardUserDefaults().setObject(asdArr, forKey: "asd")

【讨论】:

这将在应用程序第一次运行时崩溃。

以上是关于Swift 将值添加到现有用户默认值的主要内容,如果未能解决你的问题,请参考以下文章

swift 可选项(Optional)

如何更新字段以将值添加到现有值?

如何自动将值添加到 Laravel 中的现有值

寻找正确的 sql 语法以将默认值添加到现有表

将具有默认值的列添加到 SQL Server 中的现有表

如何将具有默认值的两列添加到配置单元中的现有表?