2011-03-15 54 views
0

請幫忙!我是編程的新手,我遇到了以下麻煩。我正在嘗試編寫我的第一個iphone應用程序,我希望它能夠執行以下操作。我可以根據文件是否保存來更改應用視圖嗎?

當應用程序啓動用戶輸入名稱時,按下按鈕並轉到新視圖。他們的名字被保存到文件中並在整個應用程序中使用。我已經管理了很多。

我希望應用程序檢查啓動時是否存在保存的文件,並直接轉到第二個視圖而不是第一個視圖。我有搜尋天尋找答案,我仍然不知道如何做到這一點。

在看似愚蠢的風險我使用IF語句,我該如何寫它。請幫忙。

感謝您提前。

+2

你應該看看NSUserDefaults用於存儲這樣簡單的鍵值信息,它比寫入文件更容易使用(還有一些其他有用的函數來「免費」)。 – Robin 2011-03-15 13:39:22

回答

0

如果你使用NSUserDefaults來保存它,那麼你所要做的就是嘗試將值讀入一個字符串,然後檢查它是否爲零,如果是,那麼文件不在那裏,你會加載你的第一個看法,如果是的話,然後加載你的第二個視圖。

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

if(tempStr == nil) 
{ 
    //load your first view 
} 
else 
{ 
    // load your second view 
} 

你需要背出讀取你的關鍵,爲了測試是否是零,你這樣做的話,你就永遠是零,總是會使用其他的選擇,你需要設置你的對象其他地方,可能在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]; 
    } 
} 

-(IBAction)LogOutButton:(id)sender 
{ 
    NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 
    [prefs setObject:@"" forKey:@"UserName"]; 
    [prefs synchronize]; 
} 
+0

非常感謝您的幫助,但我不知道如何處理此代碼。我是否會這樣做。我試圖把它放在我的.m文件中,我得到以下錯誤。 「預期的標識符或'('之前'['默認和」初始化器「元素不是常數 – wayne 2011-03-16 02:20:32

+0

你會把它放在你的.m文件中,你能發表你寫的東西嗎? – 2011-03-16 12:51:07

+0

請幫忙!NSUserDefaults沒有保存文件。 - (IBAction)LogInButton:(id)sender {NSUserDefaults * prefs = [NSUserDefaults standardUserDefaults]; [prefs setObject:Name forKey:@「UserName」]; [prefs synchronize]; if(Name == nil){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];}} @IanOswald – wayne 2011-03-16 13:16:33

1

你必須NSUserDefaults的使用存儲的用戶名和傳遞的話。如果您想存儲更多數據,則必須使用plist(文檔目錄)或核心數據或SQLite。

// Store the data 

[[NSUserDefaults standardUserDefaults] setObject:@"yourPasswordString" forKey:@"YourKey"]; 


// Retrieve the data 

NSString *passWord = [[NSUserDefaults standardUserDefaults] objectForKey:@"YourKey"]; 

一旦檢索到的數據,你必須像檢查的條件,

if(passWord == nil) 
{ 
     //load first view 
} 
else 
{ 
    // load second view 
} 

謝謝!

+0

非常感謝您的幫助,但我不知道如何處理此代碼。我是否會這樣做。我試圖把它放在我的.m文件中,我得到以下錯誤。 「預期的標識符或'('之前'['默認和」初始值設置「元素不是常量 – wayne 2011-03-16 01:26:21

+0

它應該在.m類文件中使用,首先應該存儲數據(您的電子郵件字符串),之後您將檢索字符串從 – Pugal 2011-03-16 08:33:24

+0

任何類請幫助NSUserDefaults的未保存文件 - (IBAction爲)LogInButton:(ID)發送{ \t NSUserDefaults的*首選項= [NSUserDefaults的standardUserDefaults]; \t [首選項的setObject:!名稱forKey:@「用戶名「]; \t [首選項同步]; \t \t 如果(名稱==無){ \t \t ClubSearchViewController * CSearch = [[ClubSearch ViewController alloc] initWithNibName:@「ClubSearchViewController」bundle:Nil]; \t \t [self presentModalViewController:CSearch animated:YES]; \t} \t else { SearchMenu * SMenu = [[SearchMenu alloc] initWithNibName:@「SearchMenu」bundle:nil]; [self presentModalViewController:SMenu animated:YES]; \t} } @Pugal Devan – wayne 2011-03-16 13:06:29

相關問題