NSUserDefaults – 存储和检索数据

我有一些使用NSUserDefaults在一个视图中存储的数据,然后显示在另一个视图。 我遇到的问题是当用户更改数据,然后返回到显示数据的视图(在UILabel中)时,将显示首次保存的数据,而不是保存的新文本。

我想我也许需要用viewDidAppear做一些事情,这样每次显示视图时都会显示最新保存的数据。

这里是我在UILabel上显示NSUserDefaults存储信息的代码:

NSString *aValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"myTextFieldKey"]; NSLog(@"Value from standardUserDefaults: %@", aValue); NSLog(@"Label: %@", myLabel); myLabel.text = aValue; 

如果有人能指出我的方向是好的,

谢谢

把这个文本放进去

 - (void) viewWillAppear:(BOOL)animated { [super viewWillAppear: animated]; NSString *aValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"myTextFieldKey"]; NSLog(@"Value from standardUserDefaults: %@", aValue); NSLog(@"Label: %@", myLabel); myLabel.text = aValue; } 

在你的“编辑”视图中 – viewWillDisappear:保存更改在NSUserDefaults

将数据保存到NSUserDefaults时,不会立即写入永久存储器。 当你在NSUserDefaults中保存数据时,确保你调用:

 [[NSUserDefaults standardUserDefaults] synchronize]; 

这样,保存的值将被立即写入到存储中,并且每次从UserDefaults读取都将产生更新的值。

设置某个值时不要忘记使用synchronize

 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; [defaults setObject:YOUR_VALUE forKey:@"KEY_NAME"]; [defaults synchronize]; 

现在,您可以将代码放在viewWillAppear方法中,以从默认值中检索值,这将帮助您获取所需密钥的当前值。

 NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; NSString* strValue = [defaults objectForKey:@"KEY_NAME"]; myLabel.text = strValue != nil ? strValue : @"No Value"; 

希望能帮助到你

在Swift中我们可以这样做:

为了节省价值:

  let defaults = UserDefaults.standard defaults.set(YOUR_VALUE, forKey: "YOUR_KEY_NAME") 

为了获得价值:

  let defaults = UserDefaults.standard let data = defaults.objectForKey("YOUR_KEY_NAME") 

有关更多详细信息,请访问: https : //www.hackingwithswift.com/example-code/system/how-to-save-user-settings-using-userdefaults