2011-03-15 53 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

相关问题