2015-10-07 4 views
-2

У меня есть NSDictionary, и я назначаю значение ключа цены на NSNumber свойство моего объекта, но когда я регистрирую значение числа, это странное отрицательное число!NSNumber возвращает неправильное значение

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

цена недвижимость NSNumber

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

напечатает __NSCFNumber, который является правильным.

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

возвращает 0x000000000000c350, который является 50000 Вот так

, но когда я вхожу item.price или [item.price integerValue] это -15536 что совершенно неправильно!

Любая идея?

пищевой образец в формате JSON:

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

enter image description here

+4

Как вы "войти" 'item.price'? –

+0

Что такое 'item' и что такое' food'? –

+0

Элемент 'NSManagedObject' представления продуктов питания' NSDictionary' –

ответ

3

Угадайте, что?

все эти журналы и проблемы показывают, что мое свойство NSNumber не может хранить некоторые целые числа. но какой диапазон целых чисел? целые числа, которые находятся между -32,768/32,768

но почему? потому что я определил свой управляемый объект price свойство вида NSInteger 16!

я должен определить его как NSInteger 32

+0

Удивительный ответ. –

0

Допустим, вы пытаетесь сделать это:

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

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

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

и журнал будет отображаться как:

800002,-0.000000,-5764607523033434878,50000 

все em являются совершенно разными. Последним является правильный NSNumber объект

NSNumber - это объект, поэтому вам необходимо использовать% @ для его регистрации, а оставшиеся% d,% f,% ld не являются объектами.

+0

посмотреть обновленное фото! даже с NSLog (@ "% @", num) возвращает неправильный номер –

+0

Можете ли вы сделать элемент и показать нам содержимое в элементе? –

+0

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

 Смежные вопросы

  • Нет связанных вопросов^_^