在nsuserdefaults中设置值

时间:2012-10-25 05:30:35

标签: objective-c ios cocoa-touch

我是Objective-C和XCode的新手,我遇到了这样的问题。

如何将值正确保存到NSUserDefaults

我有价值

[_textFields objectAtIndex:2]).text

尝试这样做

[[[NSUserDefaults standardUserDefaults] setValue:((UITextField *)[_textFields objectAtIndex:2]).text))  forKey:@"Phone"];
[[NSUserDefaults standardUserDefaults] synchronize];

你是如何正确地做到的?

4 个答案:

答案 0 :(得分:2)

使用setObject:forKey:代替setValue:forKey:

[[[NSUserDefaults standardUserDefaults] setObject:((UITextField *)[_textFields objectAtIndex:2]).text)) forKey:@"Phone"];

更新: 如果数组中确实有该文本字段,则代码将起作用。以下是逐步分解代码以使其更清晰:

UITextField* textField = [_textFields objectAtIndex:2]; // get your text field
NSString* text = textField.text; // get the actual value we are going to store
[[[NSUserDefaults standardUserDefaults] setObject:text forKey:@"Phone"]; // store it

答案 1 :(得分:1)

您正在使用字符串值。您应该使用setObjectForKey(save)和objectForKey(read)。这是一个例子

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSString *yourText = [[_textFields objectAtIndex:2] text]; // Your text

// Save
[userDefaults setObject:yourText forKey:kKey];
[userDefaults synchronize];

// Read
NSString *result = (NSString *) [userDefaults objectForKey:kKey];

答案 2 :(得分:1)

使用方法setObject:forKey:代替setValue:forKey:

NSUserDefaults课程中:

[[NSUserDefaults standardUserDefaults] setObject:"Your Object" forKey:@"Phone"];

答案 3 :(得分:0)

如果要在setObject:forKey:中存储属性列表对象(字典,数组,字符串和数字),则需要使用NSUserDefaultsSee the docs.