2015-10-07 1 views
-2

J'ai NSDictionary et j'assigner la valeur de la clé 'prix' à la propriété NSNumber de mon objet mais quand j'enregistre la valeur numérique, c'est un nombre négatif étrange!NSNumber renvoie la valeur erronée

item.price = [food valueForKey:@"price"]; 

propriété prix est NSNumber

[[food valueForKey:@"price"] class] 

imprimera __NSCFNumber qui est juste.

[[food valueForKey:@"price"] intValue] 

retours 0x000000000000c350 qui est 50000 C'est vrai

mais quand je me connecte item.price ou [item.price integerValue] il est -15536 qui est complètement faux!

Une idée?

échantillon JSON alimentaire:

{ "title":"Pizza", "price":50000 }

enter image description here

+4

Comment "log" 'item.price'? –

+0

Qu'est-ce qu'un 'item' et qu'est ce que' food'? –

+0

article est la représentation «NSManagedObject» de la nourriture «NSDictionary» –

Répondre

3

Devinez quoi?

tous ces journaux et problèmes montre que ma propriété NSNumber ne peut pas stocker certains entiers. mais quelle gamme d'entiers? entiers qui sont entre -32,768/32,768

mais pourquoi? parce que j'ai définir mon objet géré price propriété de genre NSInteger 16!

je définir comme NSInteger 32

+0

réponse impressionnante. –

0

Disons que vous essayez de le faire:

NSDictionary *inventory = @{ 
           @"price" : [NSNumber numberWithInt:50000] 

           }; 
    NSNumber *num= [inventory valueForKey:@"price"]; 

    NSLog(@"%d,%f,%ld,%@",num,num,num,num); 

et le journal affichera comme:

800002,-0.000000,-5764607523033434878,50000 

tous les Le dernier est l'objet exact NSNumber

NSNumber est un objet, vous devez donc utiliser% @ pour l'enregistrer et% d,% f,% ld ne sont pas des objets.

+0

voir la photo mise à jour! même avec NSLog (@ "% @", num) renvoie un mauvais numéro –

+0

Pouvez-vous faire l'objet po et nous montrer le contenu dans l'article? –

+0

oui: 'price =" -15536 ​​";' –