非常简单..我有一个iPhone应用程序,如果他们之前在过去30天内登录过,我想要自动登录。我将NSDate存储在NSUserDefaults中,如此(用户名/传入钥匙串):
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *lastLogin = [NSDictionary dictionaryWithObject:[NSDate date] forKey:@"last_login"];
[currentDefaults setObject:lastLogin forKey:@"login_info"];
[currentDefaults synchronize];
现在有两个地方可以检查这个lastLogin字典是否存在:
1)我的代码中响应NotLoggedInExceptions的部分被抛出 由我的服务器。 (注意:我已经添加了同步调用,即使我认为只有在你写值时才需要它。)
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *loginInfo = [currentDefaults dictionaryForKey:@"login_info"];
[currentDefaults synchronize];
NSDate *lastSeen = [loginInfo objectForKey:@"last_login"];
NSLog(@"%@",loginInfo);
2)在人们看到的第一个屏幕上。由于 延迟需要一段时间才能等待未登录的异常,所以我 如果默认值不存在,我想简单地抛出登录信息。
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSDictionary *loginInfo = [currentDefaults dictionaryForKey:@"login_info"];
[currentDefaults synchronize];
应用程序打开后会发生什么。第一个屏幕经过第2步,认为先前的登录条目已保存,因此可以将代码传递到服务器级别。现在在服务器级别(步骤1),lastLogin字典为空! Aka我的用户默认值在不同的类中生成两个不同的值...尽管事实上我使用的是标准默认值。
之前有人碰到过吗?
答案 0 :(得分:1)
您无需将NSDate
存储为字典,您可以在NSuserDefoult中以登录时间简单存储当前时间数据 -
设置强>
NSDate *myDate = [NSDate date];
[[NSUserDefaults standardUserDefaults] setObject:myDate forKey:@"myDateKey"];
获取强>
NSDate *myDate2 = (NSDate *)[[NSUserDefaults standardUserDefaults] objectForKey:@"myDateKey"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/mm/yyyy hh:mm:ss"];
NSString *string=[dateFormatter stringFromDate:myDate2];
NSLog(@"str get velue==%@",string );
和你的代码你设置的代码类似于下面的代码来存储Currunt日期时间: -
将日期存储为NSMutabel字典,而不是像bellow那样的字典
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *lastLogin = [NSMutableDictionary dictionaryWithObject:[NSDate date] forKey:@"last_login"];
[currentDefaults setObject:lastLogin forKey:@"login_info"];
[currentDefaults synchronize];
NSUserDefaults *currentDefaults2 = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *loginInfo2 = [[currentDefaults2 dictionaryForKey:@"login_info"]mutableCopy];
//while you get NSUserdefoult Nsmutabe Dictionary set code like this line with **mutableCopy**
NSLog(@"%@",loginInfo2);
输出
“last_login”=“2012-11-10 06:04:28 +0000”;