나는 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...
마지막으로 ... 내가 textFieldDidBeginEditing에 familyName을 유지하려고 :
-(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