我有一个核心数据实体,其属性数量为NSDecimalNumber
。对于此属性,实体的类具有使用NSDecimalNumber
作为参数定义的方法。
在Interface Builder中,我将一个表列绑定到此属性(使用NSArrayController
),并在列的单元格中放置NSNumberFormatter
。格式化程序在IB中配置为“货币”。
现在,当我尝试输入一个数字时,我收到以下错误:
-[NSCFNumber decimalNumberBySubtracting:]: unrecognized selector sent to instance 0x1001d5590
显然,我的setter方法正在接收常规NSNumber
而不是NSDecimalNumber
。我可以用不同的方式配置我的格式化程序,可能是在代码而不是IB中,或者是添加另一个以NSNumber
作为参数的setter的唯一选项吗?
答案 0 :(得分:2)
核心数据不存储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 :(得分:1)
我不清楚你的问题究竟在哪里。格式化程序给你一个直的NSNumber而不是NSDecimalNumber或者核心数据。
要使NSNumberFormatter为您提供NSDecimalNumbers,请使用方法-setGeneratesDecimalNumbers:
要使数据存储为您提供NSDecimalNumbers,请确保模型中的相关属性设置为“十进制数”。