swift:如何更新NSUserDefault?

时间:2016-04-26 14:46:50

标签: ios swift nsuserdefaults

所以,我想创建自己的迷你社交网络。在注册页面中,我有以下代码行:

var ns = NSUserDefaults.standardUserDefaults()    
let array: [String] = ["\(login!)","\(password!)","\(nameSurname!)", "team", "university"] //team, university
ns.setObject(array, forKey: "\(login)")

我只是创建数组并将其设置为NSUserDefaults。

此外,我还有一个页面,用户可以在其中更改有关它们的信息或数据,例如更改密码。在这个页面中,我有以下几行代码:

let login = loginTextField.text!
        let password = passwordTextField.text!
        let nameSurname = nameSurnameTextField.text!
        let team = teamTextField.text!
        let university = universityTextField.text!

            let ns = NSUserDefaults.standardUserDefaults()
            let array: [String] = ["\(login)","\(password)","\(nameSurname)", "\(team)", "\(university)"] //team, university course
            ns.setObject(array, forKey: "\(login)")

这里我创建新数组并将此新数组设置为KEY-Login。但我在NSUserDefaults中的数据不会改变。我该怎么办呢?我该做什么?感谢)

2 个答案:

答案 0 :(得分:2)

不确定这里的问题是什么。首先改变这个:

    var ns = NSUserDefaults.standardUserDefaults() 
    //No need for " quotation marks you are using String vars   
    let array: [String] = [login!, password!, nameSurname!, team, university] 
    ns.setObject(array, forKey: "login")

    //Save the changes 
    ns.synchronize()


    //Now when we want to load the information
    let ns = NSUserDefaults.standardUserDefaults()
    let array = ns.objectForKey("login")
    //This prints the users password
    print(array![1])



    //Make some changes
    let newArray = ["new name", password!, nameSurname!, team, university]
    ns.setObject(newArray, forKey: "login")
    //Remember to save
    ns.synchronize()

Maks确定您使用的是ns.synchronize()

答案 1 :(得分:0)

摘自有关NSUserDefaults中的性能权衡的文档:

  

从NSUserDefaults读取速度非常快。它会将值缓存到   避免从磁盘读取,大约需要0.5微秒   2012年MacBook上的[[NSUserDefaults standardUserDefaults] boolForKey:]   临。这通常是不必要的(甚至是不受欢迎的,因为它   阻止拾取新值)以缓存读取结果   偏好。

     

但是,写入NSUserDefaults有点慢。一般来说,期待   它大致与使用NSPropertyListSerialization一样长   将您的密钥和值转换为plist数据,再加上几十个   微秒。出于这个原因,以及内存使用,通常是这样   最好在CFP参考中存储相对较小的数据。

     

长话短说,不要在iOS 8及更高版本中使用同步。

相关问题