2011-03-23 59 views
1

只是一個小問題。我的應用程序使用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

回答

1

的代碼有兩條路徑,展現一些的人去,如果它不是在第一次記者,這意味着它沒有擊中代碼上來。設置一個斷點以確保它是。

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

相關問題