Я не знаком с используемой вами платформой, но я бы предложил следующее:
Какой тип возвращен [jProduct objectForKey: @ "price"]?
Возможно, вам нужно обойти тот факт, что это неправильный тип - может быть, строка NSString?
Попробуйте:
NSDecimal RRP = [[NSDecimalNumber decimalNumberWithString: [jProduct objectForKey: @ "Price"] decimalValue];
Edit:
Да, NSDecimal - это структура, а не объект, поэтому не следует использовать NSLog (@ "% @"); как идентификатор формата% @ для объектов. Вместо этого вы можете использовать идентификаторы формата основного типа, такие как% d или% i, и обращаться к компонентам структуры по отдельности.
Однако, поскольку вы, вероятно, захотите записать десятичное число, а не компоненты структуры (знак, мантисса и т. Д.), Вы, вероятно, захотите преобразовать его обратно в NSDecimalNumber (который является объектом).
Так становится:
NSLog (@ "% @", [NSDecimalNumber decimalNumberWithDecimal: RRP]);