如果声明没有检查条件对第一次运行

问题描述:

只是一个小问题。我的应用程序使用NSUserDefaluts和用户IF语句来存储一些登录信息,以检查文件是否存在,如果是,则加载第二个视图,如果不是,则转到登录屏幕。如果声明没有检查条件对第一次运行

一旦用户输入姓名,电子邮件等他们去按按钮,保存细节,并采取第二视图但用户必须按两次去按钮的应用程序需要他们的第二个屏幕前。我认为IF语句在第一次运行时没有找到保存的细节,因此需要再次按下按钮。

我怎样才能克服此问题,因为它将对用户非常令人沮丧。我在下面列出了我的代码。与代码的解释将不胜感激。

-(IBAction)LogInButton:(id)sender { 

NSString *tempStr = [[NSUserDefaults standardUserDefaults] objectForKey:@"UserName"]; 

    if (tempStr == nil || [tempStr isEqualToString:@""]) { 

    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:Name.text forKey:@"UserName"]; 
    [prefs synchronize]; 


    ClubSearchViewController *CSearch = [[ClubSearchViewController alloc] initWithNibName:@"ClubSearchViewController" bundle:nil]; 
    [self presentModalViewController:CSearch animated:YES]; 


    } 
    else { 
    SearchMenu *SMenu = [[SearchMenu alloc]initWithNibName:@"SearchMenu" bundle:nil]; 
    [self presentModalViewController:SMenu animated:YES]; 
    } 
} 

在此先感谢。

+1

我建议把一些'的NSLog()'报表,看看有什么是你的代码怎么回事。你写的东西似乎应该起作用,所以有可能这个问题在别的地方。 – 2011-03-23 01:50:39

+0

或者在调试器中单步执行。 – Caleb 2011-03-23 04:18:43

的代码有两条路径,展现一些的人去,如果它不是在第一次记者,这意味着它没有击中代码上来。设置一个断点以确保它是。

if语句确实应该:

if (tempStr.length == 0)

既然你可以传递消息到零你回零如果字符串为空或零。这有点简单,而且工作量少。

+0

感谢您的帮助。我运行了调试器,它显示tempStr超出范围,超出范围,CSearch超出范围,SMenu超出范围。超出范围意味着什么?@ raj2raaz @Caleb – wayne 2011-03-25 07:32:54

+0

任何帮助@ KendallHelmstetterGein – wayne 2011-03-25 07:51:18