Показывать NSDecimalNumber как валюту в IB - PullRequest
2 голосов
/ 06 марта 2011

У меня есть базовый объект данных с количеством свойств, равным NSDecimalNumber. Для этого свойства класс сущности имеет метод, определенный с NSDecimalNumber в качестве аргумента.

В Интерфейсном Разработчике я привязал столбец таблицы к этому свойству (используя NSArrayController), а в ячейку столбца поставил NSNumberFormatter. Форматтер настроен в IB как «валюта».

Теперь, когда я пытаюсь ввести число, я получаю следующую ошибку:

-[NSCFNumber decimalNumberBySubtracting:]: unrecognized selector sent to instance 0x1001d5590

Очевидно, мой метод установки получает обычный NSNumber, а не NSDecimalNumber. Могу ли я настроить свой форматер иначе, возможно, в коде, а не в IB, или это единственный вариант добавить дополнительный установщик с NSNumber в качестве аргумента?

Ответы [ 2 ]

2 голосов
/ 06 марта 2011

Базовые данные не хранятся NSDecimalNumber, только NSNumber.NSNumber не имеет метода, который вызывается.

Вам нужно либо изменить определение сущностей, чтобы использовать NSNumber, либо создать свой собственный NSValueTransformer для хранения NSDecimalNumber в базовых данных.

Пожалуйста, посмотрите здесь более подробную информацию о свойствах: http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/CoreData/Articles/cdMOM.html%23//apple_ref/doc/uid/TP40002328-SW1

1 голос
/ 06 марта 2011

Мне не совсем ясно, где твоя проблема.Либо средство форматирования дает вам прямой NSNumber вместо NSDecimalNumber, либо базовые данные.

Чтобы заставить NSNumberFormatter давать вам NSDecimalNumbers, используйте метод -setGeneratesDecimalNumbers:

Чтобы хранилище данных давало вам NSDecimalNumbers, убедитесь, что для соответствующего атрибута в модели установлено "десятичное число".

...