我正在为工地创建应用。它将首先显示登录页面。当我们输入用户名和密码时,webservice将返回userid作为响应。使用此用户ID,我们可以获得工作。
我想首先放置作业屏幕并检查用户ID是否为null然后打开loginview。如果它不为null,则在tableview中加载作业。当用户首次输入用户名密码时,我使用Nsuserdefaults来保存响应。一切都很好。但是userdefault键在控制台中显示为null但我的条件也是加载输出..这很奇怪,。
我的代码是
-(void)CheckCond{
NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];
NSLog(@"Value for userdefault %@",[storeData objectForKey:@"userId"]);
NSString *responseValue = [storeData objectForKey:@"userId"];
NSLog(@"first REsponse value :%@",responseValue);
if ([responseValue isEqualToString:@""]) {
[self LoginLogout];
}
else
{
NSLog(@"self.userId %@",self.userId);
NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];
[storeData setObject:self.userId forKey:@"userId"];
NSLog(@"%@",[storeData objectForKey:@"userId"]);
[self loadOutput];
}
}
首次登录的控制台输出是
2011-09-09 13:21:29.438 ITClassifiedUniversal [2718:207]第一次回应 价值:(null)2011-09-09 13:21:29.438 ITClassifiedUniversal [2718:207] self.userId 77533 2011-09-09 13:21:29.438 ITClassifiedUniversal [2718:207] 77533
退出应用程序并重新启动控制台输出后:
2011-09-09 13:21:42.044 ITClassifiedUniversal [2731:207]的价值 userdefault(null)2011-09-09 13:21:42.045 ITClassifiedUniversal [2731:207]第一个REsponse值:(null) 2011-09-09 13:21:42.045 ITClassifiedUniversal [2731:207] self.userId (null)2011-09-09 13:21:42.045 ITClassifiedUniversal [2731:207](null)
AS上面的输出显示用户ID的NSUserdefault为空?什么问题? 此用户ID来自登录视图
// Create and set up job view controller.
jobView = [[JobViewController alloc] initWithNibName:@"JobView" bundle:nil];
jobView.userId = self.response;
// Create a nav controller with job view as its root controller.
UINavigationController *jobViewNavController = [[UINavigationController alloc] initWithRootViewController:jobView];
// Present the job view nav controller.
[self presentModalViewController:jobViewNavController animated:YES];
[jobView release];
[jobViewNavController release];
答案 0 :(得分:1)
at last add synchronize statement then its give proper value
NSUserDefaults* storeData = [NSUserDefaults standardUserDefaults];
if ([storeData objectForKey:@"userId"]==nil)
{
[storeData setObject:self.userId forKey:@"userId"];
[storeData synchronize];
}
答案 1 :(得分:0)
设置userId后,需要保存默认值:
[storeData synchronize];
这样他们下次就可以拿起来了。
此外,如果您的对象为nil,则它不会向isEqualToString返回YES。你的if语句应该是
if (!responseValue || [responseValue isEqualToString:@""])
答案 2 :(得分:0)
您可以使用以下代码。它可能会提供你所需要的东西。
[[NSUserDefaults standardUserDefaults] setValue:userID forKey:@"userID"];
[[NSUserDefaults standardUserDefaults] synchronize];
答案 3 :(得分:0)
查看Apple的AppDelegate.m
registerDefaults
,您就会知道代码出了什么问题。
您尚未使用NSUserDefaults
的相应对象和键调用{{1}}。