2010-10-04 6 views
2

Je suis en train de stocker une longue valeur longue en utilisant des données de base. Une valeur comme 119143881477165. Je stocke la valeur dans NSNumber qui est créée en utilisant la méthode convenience numberWithUnsignedLongLong. Les métadonnées Core Data ont le type pour ce champ est défini sur int64. Le nombre est stocké correctement, cependant lorsque je récupère ce nombre en utilisant unsignedLongLongValue, la valeur est tronquée.Stockage longLong valeur à l'aide de CoreData dans iPhone SDK

Des suggestions?

+1

Remerciez Dieu vous utilisez le 'unsingedLongLongValue' .... La variante brûlée n'est pas aussi agréable. –

Répondre

3

Vous dites qu'il est tronqué ... dans quel type de primitive stockez-vous la valeur? Si vous utilisez un NSUInteger, il est possible que la plate-forme que vous utilisez soit définie comme unsigned int par opposition à unsigned long. Si vous voulez explicitement un long long, utilisez un long long.

Les travaux suivants comme prévu:

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

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

Il enregistre:

2010-10-04 00: 39: 25,103 EmptyFoundation [790: a0f] d'origine: 119143881477165

2010 -10-04 00: 39: 25.106 EmptyFoundation [790: a0f] extrait: 119143881477165