Сохранение даты в NSUserDefaults (как NSString) не работает - PullRequest
2 голосов
/ 14 апреля 2011

Я пытаюсь сохранить эту дату в 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"];

Как вы можете видеть, это просто очень простая операция, которая преобразует приведенную выше строку в следующую:

2011-04-14T13:18:25

Однако, когда я загружаю это из NSUserDefaults, я получаю это:

2011-04-14 13:18:25 +0000

Может кто-нибудь сказать мне, почему?

UPDATE:

Я объявил lastUpdated как обычно в .h:

@interface TwitModel
{
    NSString *lastUpdated;
}

@property (retain) NSString *lastUpdated;

дюйм. М:

@synthesize lastUpdated;

Когда я хочу загрузить его:

    if(self.lastUpdated == nil) {
        self.lastUpdated = [[NSUserDefaults standardUserDefaults] objectForKey:@"lastUpdated"];
    }

Ответы [ 2 ]

1 голос
/ 14 апреля 2011

Вам нужно позвонить synchronize на NSUserDefaults, чтобы правильно сохранить данные:

[[NSUserDefaults standardUserDefaults] synchronize];

РЕДАКТИРОВАТЬ

Вотмой рабочий код:

// 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"]);

и вывод:

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
0 голосов
/ 14 апреля 2011

Трудно сказать - вы можете показать нам код, который перезагружает значение? Это может быть проще, по крайней мере, концептуально, если вы используете средство форматирования даты для создания строки в нужном вам формате. Или просто сохраните саму дату и позаботьтесь о ее форматировании, когда вам нужно ее отобразить.

...