我有一个带有属性数量的核心数据实体,它是一个 NSDecimalNumber
。对于此属性,实体的类有一个使用 NSDecimalNumber
作为参数定义的方法。
在 Interface Builder 中,我将表列绑定(bind)到此属性(使用 NSArrayController
),并在列的单元格上放置 NSNumberFormatter
。格式化程序在 IB 中配置为“货币”。
现在,当我尝试输入数字时,出现以下错误:
-[NSCFNumber decimalNumberBySubtracting:]: unrecognized selector sent to instance 0x1001d5590
显然我的 setter 方法正在接收常规的 NSNumber
而不是 NSDecimalNumber
。我可以以不同的方式配置我的格式化程序,也许是在代码中而不是 IB 中,或者是使用 NSNumber
作为参数添加附加 setter 的唯一选项?
最佳答案
Core Data 不存储 NSDecimalNumber
,仅存储 NSNumber
。 NSNumber
没有被调用的方法。
您需要更改实体定义以使用 NSNumber
或构建自己的 NSValueTransformer
以将 NSDecimalNumber
存储在 Core Data 中。
请在此处查看有关属性的更多详细信息:http://developer.apple.com/library/ios/ipad/#documentation/Cocoa/Conceptual/CoreData/Articles/cdMOM.html%23//apple_ref/doc/uid/TP40002328-SW1
关于objective-c - 将 NSDecimalNumber 显示为 IB 中的货币,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5208383/