2010-10-04 51 views
2

我正嘗試使用核心數據存儲長時間的值。值爲119143881477165.我將該值存儲在使用便捷方法numberWithUnsignedLongLong創建的NSNumber中。核心數據元數據的此字段的類型設置爲int64。數字得到正確存儲,但是當我使用unsignedLongLongValue檢索此數字時,該值被截斷。在iPhone SDK中使用CoreData存儲longLong值

有什麼建議嗎?

+1

謝天謝地你正在使用'unsingedLongLongValue' ....燒焦的變體不是那麼愉快。 – 2010-10-04 06:36:35

回答

3

你說它被截斷......你存儲的值是什麼類型的基元?如果您使用的是NSUInteger,則有可能您所使用的平臺將其定義爲unsigned int而不是unsigned long

如果要明確一個long long,然後用long long

預期以下工作:

unsigned long long number = 119143881477165; 
NSNumber * numberValue = [NSNumber numberWithUnsignedLongLong:number]; 
unsigned long long extracted = [numberValue unsignedLongLongValue]; 

NSLog(@"original: %llu", number); 
NSLog(@"extracted: %llu", extracted); 

它記錄:

2010-10-04 00:39:25.103 EmptyFoundation [790:A0F]原:119143881477165

2010 -10-04 00:39:25.106 EmptyFoundation [790:a0f]解壓縮:119143881477165