Ios swift:如何更新NSUserDefault?
所以,我想创建自己的迷你社交网络。在注册页面中,我有以下代码行:Ios swift:如何更新NSUserDefault?,ios,swift,nsuserdefaults,Ios,Swift,Nsuserdefaults,所以,我想创建自己的迷你社交网络。在注册页面中,我有以下代码行: var ns = NSUserDefaults.standardUserDefaults() let array: [String] = ["\(login!)","\(password!)","\(nameSurname!)", "team", "university"] //team, university ns.setObject(array, forKey: "\(login)") 我只是创建数组并将其设置为NS
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中的数据没有改变。我怎么能修好它?我该怎么办?谢谢)我不知道这里有什么问题。首先要改变这一点:
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()
确保您使用的是
ns.synchronize()
但不确定问题出在哪里。首先要改变这一点:
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()
确保您使用的是NSUserDefaults中有关性能权衡的文档中的
ns.synchronize()
:
从NSUserDefaults读取非常快。它会将值缓存到
避免从磁盘读取数据,大约需要0.5微秒
[[NSUserDefaults standardUserDefaults]boolForKey:]在2012年的MacBook上
赞成的意见。这通常是不必要的(甚至是不可取的,因为
防止拾取新值)以缓存从中读取的结果
偏好
但是,写入NSUserDefaults的速度稍慢。一般来说,期望
使用NSPropertyListSerialization所需的时间大约与使用NSPropertyListSerialization所需的时间相同
将您的密钥和值转换为plist数据,再加上一些10秒的
微秒。由于这个原因,以及内存使用,它通常是
最好在CFPreferences中存储相对较小的数据
长话短说,不要在iOS 8及更高版本中使用同步
摘自有关NSUserDefaults中性能权衡的文档: 从NSUserDefaults读取非常快。它会将值缓存到 避免从磁盘读取数据,大约需要0.5微秒 [[NSUserDefaults standardUserDefaults]boolForKey:]在2012年的MacBook上 赞成的意见。这通常是不必要的(甚至是不可取的,因为 防止拾取新值)以缓存从中读取的结果 偏好 但是,写入NSUserDefaults的速度稍慢。一般来说,期望 使用NSPropertyListSerialization所需的时间大约与使用NSPropertyListSerialization所需的时间相同 将您的密钥和值转换为plist数据,再加上一些10秒的 微秒。由于这个原因,以及内存使用,它通常是 最好在CFPreferences中存储相对较小的数据 长话短说,不要在iOS 8及更高版本中使用同步
执行
ns.synchronize()
操作后,可能需要调用ns.synchronize()
。setObject(数组,forKey:“\(login)”)“\(login)”
表示登录文本字段中的值,而不是常量字符串“login”
。这是真的吗?@Larmesynchronize()
几乎总是无用的:)看看这个链接,它将帮助您了解如何使用NSUserDefaults。我认为问题的一部分是你没有正确理解它是如何工作的。难道没有人会指出您不应该在NSUserDefaults中以纯文本形式保存用户名,尤其是密码吗?我想这里的StackOverflow用户会很忙。在执行ns.synchronize()
之后,您可能需要调用ns.synchronize()
。setObject(数组,forKey:“\(login)”)“\(login)”
表示登录文本字段中的值,而不是常量字符串“login”
。这是真的吗?@Larmesynchronize()
几乎总是无用的:)看看这个链接,它将帮助您了解如何使用NSUserDefaults。我认为问题的一部分是你没有正确理解它是如何工作的。难道没有人会指出您不应该在NSUserDefaults中以纯文本形式保存用户名,尤其是密码吗?我以为这里的StackOverflow用户都会这么做。