我正在尝试使用NSUserDefaults存储和检索startTime
和endTime
NSDate。
存储它们似乎不是问题:
self.convertedStringToDate = convertDate
NSLog(@"This should read 16:00: %@", self.convertedStringToDate);
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:convertDate forKey:@"startDate"];
[userDefaults synchronize];
然后我检索它只是为了确保它正确存储和检索:
NSDate* temporaryDate = (NSDate*)[userDefaults objectForKey:@"startDate"];
NSLog(@"Now User Defaults, should read 16:00: %@", temporaryDate);
看着我的NSLog,一切都很好:
2012-07-19 14:38:26.002 app[1973:707] This should read 16:00: 2012-07-19 16:00:00 +0000
2012-07-19 14:38:26.022 app[1973:707] Now User Defaults, should read 16:00: 2012-07-19 16:00:00 +0000
现在的问题是,当我再次检索日期时,在另一种方法中,日期出现null:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSDate *tmpDate = (NSDate*)[userDefaults objectForKey:@"startTime"];
NSLog(@"Retreiving date, should be 16:00: %@",tmpDate);
如此日志所示:
2012-07-19 14:38:26.107 app[1973:707] Retreiving date, should be 16:00: (null)
有没有人有任何想法?我也尝试不检查检查中的日期,但日期继续返回null(这也没有意义,NSUSerDefaults是存储这些密钥和对象的数据库)。我也试过存储对象的retained
属性,但仍无济于事。我错过了什么?
编辑:为愚蠢的错误阅读您自己的代码非常重要。
答案 0 :(得分:5)
守则是正确的但是......
tmpDate = [userDefaults objectForKey:@“ startTime ”];
应该是
tmpDate = [userDefaults objectForKey:@“ startDate ”];
答案 1 :(得分:4)
这就是为什么你应该总是定义字符串常量。
答案 2 :(得分:0)
在NSString上创建一个类别,代码是: 的NSString + date.h @interface(NSString) 制作类方法 +(的NSString)今日; @结束 的NSString + date.m @implimentation(NSString) +(的NSString)今日 { NSDateFormatter * formatter = [[NSDateFormatter alloc] init]; [formatter setTimeStyle:NSDateFormatShortStyle]; [formatter setDateStyle:NSDateFormatShortStyle]; NSDate *今天= [NSDate Date]; NSString * theDate = [formatter stringFromDate:today]; 返回日期; }
只使用电话 在其他课程的其他地方 NSString * theDate = [今日NSString]; 这很容易没有搞乱默认或任何东西 会给你更多时间来担心更重要的事情 而不是获取和设置日期