所以,我想创建自己的迷你社交网络。在注册页面中,我有以下代码行:
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中的数据不会改变。我该怎么办呢?我该做什么?感谢)
答案 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及更高版本中使用同步。