我正在尝试使用NSUserDefaults将2个字符串保存到数组中,但是当我想要获取字符串时会出现一些问题。
这是我的代码:
- (IBAction)closeSettingsView:(id)sender {
NSArray *saveStrings = [[NSArray alloc] initWithObjects:@"%@", @"%@", yourNameTextField.text, customPhraseTextField.text, nil];
NSUserDefaults *defaultsFields = [NSUserDefaults standardUserDefaults];
[defaultsFields setObject:saveStrings forKey:@"savedStrings"];
[defaultsFields synchronize];
}
- (void)viewDidLoad {
NSUserDefaults *defaultsFields = [NSUserDefaults standardUserDefaults];
NSArray *loadStrings = [defaultsFields stringArrayForKey:@"savedStrings"];
NSString *nameString = [NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:0]];
NSString *phraseString = [NSString stringWithFormat:@"%@", [loadStrings objectAtIndex:1]];
NSLog(@"%@", nameString);
NSLog(@"%@", phraseString);
}
这是我的日志:
2013-07-09 02:59:31.639 Alarm Pro[219:60b] %@
2013-07-09 02:59:31.642 Alarm Pro[219:60b] %@
如何正确阅读字符串?
答案 0 :(得分:3)
而不是在数组的开头两次添加@“%@”字符串:
NSArray *saveStrings = [[NSArray alloc] initWithObjects:@"%@", @"%@", yourNameTextField.text, customPhraseTextField.text, nil];
只插入变量:
NSArray *saveStrings = [[NSArray alloc] initWithObjects:yourNameTextField.text, customPhraseTextField.text, nil];
使用你拥有的代码,数组有4个对象,第一个和第二个是字符串@“%@”和@“%@”。因此,当您调用[loadStrings objectAtIndex:0]和[loadStrings objectAtIndex:1]时,输出是前两个字符串,@“%@”和@“%@”。
换句话说,你不是先定义对象的格式,然后用initWithObjects传递包含字符串的变量:而只是传递对象本身,没有先前的格式。
答案 1 :(得分:2)
您的字符串被正确读取,只是您正在保存错误的数据。
NSArray *saveStrings = [[NSArray alloc] initWithObjects:@"%@", @"%@", yourNameTextField.text, customPhraseTextField.text, nil];
这将创建一个包含4个元素的数组。前两个是@“%@”,所以当你接受objectAtIndex 0和1时,它在两种情况下都正确地返回@“%@”。
您需要稍微重写一下您的保存代码:
NSArray *saveStrings = [[NSArray alloc] initWithObjects:yourNameTextField.text, customPhraseTextField.text, nil];
答案 2 :(得分:2)
NSString *str1=[textbox1.text];
NSString *str2=[textbox2.text];
NSArray *arr=[[NSArray alloc]initWithObjects:str1,str2, nil];
then use NSUserDefaults
答案 3 :(得分:1)
其他答案都是正确的 您还可以使用新的Obj-C语法使其更具可读性。
NSArray *saveStrings = @[yourNameTextField.text, customPhraseTextField.text];
如果你想要实际格式化字符串,我会将它分成多行。即:
NSString *entry1 = [NSString stringWithFormat:@"Sir %@", yourNameTextField.text];
NSArray *saveStrings = @[entry1, customPhraseTextField.text];