Objective c 解析问题:仅在存档时才需要语句
只有在尝试Objective c 解析问题:仅在存档时才需要语句,objective-c,xcode,parsing,archive,expected-exception,Objective C,Xcode,Parsing,Archive,Expected Exception,只有在尝试存档我的XCode项目时,我才会收到解析问题预期语句错误。我没有收到此错误,当我定期构建应用程序而不是存档时,应用程序运行良好 -(void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; self.navigationController.navigationBarHidden = YES; if ([[[NSUserDefaults standardUserDefau
存档我的XCode项目时,我才会收到解析问题预期语句错误。我没有收到此错误,当我定期构建应用程序而不是存档时,应用程序运行良好
-(void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
self.navigationController.navigationBarHidden = YES;
if ([[[NSUserDefaults standardUserDefaults] objectForKey:SavedUsername] length] && [[[NSUserDefaults standardUserDefaults] objectForKey:SavedPassword] length]) {
[self.btnRememberMe setSelected:YES];
self.isButtonSelected = YES;
self.txtFieldUsername.text = [[NSUserDefaults standardUserDefaults] objectForKey:SavedUsername];
self.txtFieldPassword.text = [[NSUserDefaults standardUserDefaults] objectForKey:SavedPassword];
// NSLog(@"username = %@ , pass = %@",[[NSUserDefaults standardUserDefaults] objectForKey:SavedUsername], [[NSUserDefaults standardUserDefaults] objectForKey:SavedPassword]);
if ([self isAllFieldVerified])
#ifdef DEBUG
NSLog(@"all fields are verified");
#endif
//[self makeWebAPICallMethodCalling];
}else {
[self.btnRememberMe setSelected:NO];
self.isButtonSelected = YES;
self.txtFieldUsername.text = @"";
self.txtFieldPassword.text = @"";
}
}
解析器错误由else
行引发…问题在于NSLog
语句的#ifdef
。当您执行非调试构建时,NSLog
行不在那里,留下一个if
语句,其中没有代码
试试这个:
#ifdef DEBUG
if ([self isAllFieldVerified])
NSLog(@"all fields are verified");
#endif
或者至少添加大括号:
if ([self isAllFieldVerified]) {
#ifdef DEBUG
NSLog(@"all fields are verified");
#endif
}
这就是为什么使用大括号总是一个好主意的例子,即使只有一行。用括号括住嵌套的if语句,即if([self isAllFieldVerified]),然后重试。谢谢你的帮助。如果它不能在archiver上运行,为什么还要在我的iphone上编译和运行呢?正如我在回答的开头所说的,代码对调试版本有效,但对非调试版本无效。这就是#ifdef DEBUG
行的全部要点。当您在iPhone上进行测试时,您正在进行调试构建,但当您进行归档时,您正在进行分发(非调试)构建。