2012-01-05 42 views
1

我嘗試使用下面的代碼保存unix時間戳到核心數據:在覈心數據保存UNIX時間戳其轉換成負integere

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

,我從得到的時間戳格式遠程服務器如下:

「時間戳」:1323118064000

出於某種原因,所有時間戳值被保存爲:-2147483648

我已經嘗試INTEGER32,INTEGER64,十進制,雙倍以及字符串作爲時間戳的數據類型,但都沒有工作。

解決: 關注爲我做的伎倆:

的NSString * timeStampStr = [[structureDictionary objectForKey:@ 「時間戳」] stringValue的]。 [managedPostObject setValue:timeStampStr forKey:@「timestamp」];

+0

'NSDoubleAttributeType'可以工作,但要確保在存儲之前不要在處理值時產生問題 – 2012-01-05 00:39:48

回答

0

如果你做該領域的字符串,然後保存到它的:

的NSString * saveValue = [的NSString stringWithFormat:@ 「%d」, [structureDictionary objectForKey:@「時間戳「] intValue]];

+0

這不行,我想你的意思是'longLongValue' – 2012-01-05 00:50:41

+0

這並不奏效,我正確的方向,我最終結束了這樣做:NSString * timeStampStr = [[structureDictionary objectForKey:@「timestamp」] stringValue]; [managedPostObject setValue:timeStampStr forKey:@「timestamp」]; – 2012-01-05 01:08:39

+0

將它保存爲一個字符串並且來回轉換對於小應用程序來說是很好的,但不是「理想」的做法。這就是說,如果它的工作,它的作品! – 2012-01-05 01:17:40

0

呀,擴大對西蒙的評論,請確保您不這樣做是爲了讓你的最初值:

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

它看起來像是一個經典的包裝環境,因爲#太大而太空。

請改爲嘗試類似long long timestamp = [[dictionary objectForKey:@"timestamp"] longLongValue]

然後將它保存到INT64