在NSUserDefaults(NSString)中保存日期不起作用 [英] Saving a date in NSUserDefaults (as NSString) not working
问题描述
我正在将此日期保存在NSUSerDefaults中:
2011-04-14T13:18:25 + 0000
但是我不想要最后一位(+0000),所以我用这个方法把它关掉:
NSString * since = [last objectForKey:@updated_time];
NSString * cutOff = @+ 0000;
NSRange range = [since rangeOfString:cutOff];
self.lastUpdated = [since substringToIndex:range.location];
[[NSUserDefaults standardUserDefaults] setObject:lastUpdated forKey:@lastUpdated];
正如你所看到的,这只是一个非常简单的操作,将上述字符串剪切为: / p>
2011-04-14T13:18:25
然而,当我从NSUserDefaults加载它时,我得到:
2011-04 -14 13:18:25 +0000
任何人都可以告诉我为什么?
更新:
我曾经在.h中像以前一样宣布了lastUpdated:
@interface TwitModel
{
NSString * lastUpdated;
}
@property(retain)NSString * lastUpdated;
in .m:
@synthesize lastUpdated;
当我想加载它:
if(self.lastUpdated == nil){
self.lastUpdated = [[NSUserDefaults standardUserDefaults] objectForKey:@lastUpdated];
}
您需要调用code>同步在 NSUserDefaults
中,以便正确保存数据:
[[NSUserDefaults standardUserDefaults] synchronize];
编辑 p>
这是我的工作代码:
//输出以前的发布的存储值
NSLog(@从先前启动的值:%@,[[NSUserDefaults standardUserDefaults] valueForKey:@lastUpdated]);
NSString * since = @2011-04-14T13:18:25 + 0000;
NSLog(@Since:%@,since);
NSString * cutOff = @+ 0000;
NSRange range = [since rangeOfString:cutOff];
NSString * lastUpdated = [since substringToIndex:range.location];
[[NSUserDefaults standardUserDefaults] setObject:lastUpdated forKey:@lastUpdated];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@Value:%@,[[NSUserDefaults standardUserDefaults] valueForKey:@lastUpdated]);
输出:
2011-04-14 08:52:29.972 TestApp [2117:207]从上次发布的价值:2011-04-14T13:18:25
2011-04-14 08:52: 29.973 TestApp [2117:207]自:2011-04-14T13:18:25 + 0000
2011-04-14 08:52:29.975 TestApp [2117:207]价值:2011-04-14T13:18: 25
I'm trying to save this date in NSUSerDefaults:
2011-04-14T13:18:25+0000
But I don't want the last bit (+0000), so I chopped it off using this method:
NSString *since = [last objectForKey:@"updated_time"];
NSString *cutOff = @"+0000";
NSRange range = [since rangeOfString:cutOff];
self.lastUpdated = [since substringToIndex:range.location];
[[NSUserDefaults standardUserDefaults] setObject:lastUpdated forKey:@"lastUpdated"];
As you can see, it's just a very simple operation that will chop the above string to this:
2011-04-14T13:18:25
However when I load this from NSUserDefaults, I get this:
2011-04-14 13:18:25 +0000
Can anyone tell me why?
UPDATE:
I declared lastUpdated as usual in .h:
@interface TwitModel
{
NSString *lastUpdated;
}
@property (retain) NSString *lastUpdated;
in .m:
@synthesize lastUpdated;
When I want to load it:
if(self.lastUpdated == nil) {
self.lastUpdated = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdated"];
}
You need to call synchronize
on NSUserDefaults
in order for it to properly save the data:
[[NSUserDefaults standardUserDefaults] synchronize];
EDIT
Here's my working code:
// Output previous launch's stored value
NSLog(@"Value From Previous Launch: %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"lastUpdated"]);
NSString *since = @"2011-04-14T13:18:25+0000";
NSLog(@"Since: %@", since);
NSString *cutOff = @"+0000";
NSRange range = [since rangeOfString:cutOff];
NSString* lastUpdated = [since substringToIndex:range.location];
[[NSUserDefaults standardUserDefaults] setObject:lastUpdated forKey:@"lastUpdated"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"Value: %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"lastUpdated"]);
And the output:
2011-04-14 08:52:29.972 TestApp[2117:207] Value From Previous Launch: 2011-04-14T13:18:25
2011-04-14 08:52:29.973 TestApp[2117:207] Since: 2011-04-14T13:18:25+0000
2011-04-14 08:52:29.975 TestApp[2117:207] Value: 2011-04-14T13:18:25
这篇关于在NSUserDefaults(NSString)中保存日期不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!