我是objective-c中的新手。 我在保存UITextField中的字符串时遇到了问题。无法在NSUserDefaults中保存字符串,直到保留字符串
我在属性中声明了一个字符串,并将其命名为“familyName”来存储用户的姓氏。 然后,我想在用户按下按钮时保存familyName。
-(IBAction)textFieldDidBeginEditing:(UITextField *)textField;
{}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
familyName = inputFamilyName.text;
NSLog(@"the user's family name is %@", familyName); //it works here.
if (inputFamilyName == textField) {
[inputFamilyName resignFirstResponder];
}
return YES;
}
-(IBAction)goToNameWheel:(id)sender{
NSUserDefaults *userDefault = [NSUserDefaults standardUserDefaults];
[userDefault setObject:familyName forKey:@"family"];
[userDefault synchronize];
}
当它运行保存代码它崩溃,它说: “主题1:EXC_BAD_ACCESS(代码= 1,地址= 0X ......”
在那之后,我尝试另一个测试看看会发生什么familyName,那么我写道:
-(IBAction)test:(id)sender{
NSLog(@"1.the family name is %@", inputFamilyName.text); // This works...
NSLog(@"2.the family name is %@", familyName);} // This crashes...
最后......我尽力挽留familyName在textFieldDidBeginEditing:
-(BOOL)textFieldShouldReturn:(UITextField *)textField{
familyName = inputFamilyName.text;
NSLog(@"the user's family name is %@", familyName); //it works here.
if (inputFamilyName == textField) {
[inputFamilyName resignFirstResponder];
}
[familyName retain]; // just added randomly...
return YES;
}
然后一切正常,我可以保存familyName,打印它..等.. 我的问题是......这里究竟发生了什么,为什么我必须保留它?任何与我的原始代码错误? Thx为您的时间!
Thx为您的快速响应。 它确实有效!我现在明白了! – Walter 2012-07-23 13:19:59