Сохранение метки времени Unix в core-data преобразует ее в отрицательное целое число - PullRequest
1 голос
/ 05 января 2012

Я пытаюсь сохранить временную метку Unix в основных данных, используя следующий код:

NSManagedObject *managedPostObject = [NSEntityDescription insertNewObjectForEntityForName:@"CDPost" inManagedObjectContext:moc];
[managedPostObject setValue:[structureDictionary objectForKey:@"timestamp"] forKey:@"timestamp"];

Формат получения метки времени с удаленного сервера:

«отметка времени»: 1323118064000

По какой-то причине все значения меток времени сохраняются как: -2147483648

Я пробовал INTEGER32, INTEGER64, Decimal, Double, а также строку в качестве типа данных для отметки времени, но ни одна из них не сработала.

РЕШИТЬ: Следующее помогло мне:

NSString * timeStampStr = [[StructureDictionary objectForKey: @ "timestamp"] stringValue]; [managedPostObject setValue: timeStampStr forKey: @ "timestamp"];

Ответы [ 2 ]

0 голосов
/ 05 января 2012

Да, чтобы расширить комментарий Саймона, убедитесь, что вы не делаете это, чтобы получить свою ценность изначально:

NSInteger timestamp = [[dictionary objectForKey:@"timestamp"] intValue].

Это выглядит как классический случай обёртывания, когда # слишком велико для пробела.

Вместо этого попробуйте что-то вроде long long timestamp = [[dictionary objectForKey:@"timestamp"] longLongValue].

Затем сохраните его в INT64.

0 голосов
/ 05 января 2012

Что если вы сделаете поле строкой, а затем сохраните это в нем:

NSString * saveValue = [NSString stringWithFormat: @ "% d", [[structureDictionary objectForKey: @ "timestamp"] intValue]];

...