objective-c - 将 NSDecimalNumber 显示为 IB 中的货币

标签 objective-c cocoa interface-builder nsnumberformatter nsdecimalnumber

我有一个带有属性数量的核心数据实体,它是一个 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,仅存储 NSNumberNSNumber 没有被调用的方法。

您需要更改实体定义以使用 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/

相关文章:

ios - GMSMapView 在 iOS 中放大或缩小时显示 GMSMarker 计数

iPhone-UIWebView : Detect User Scrolling to Bottom of Page

objective-c - 为什么要初始化父类

swift - 以编程方式更改 View 以左对齐或右对齐

ios - 添加到代码时按钮的@IBActions 断开连接 - Swift,Xcode 8

iphone - 为什么保留/释放而不是新建/删除?

objective-c - NSNotification 没有被 super 调用

objective-c - 将 NSCell 设置为 NSUinteger 值时避免隐式转换警告的正确方法?

xcode - 如何构建命令行实用程序

objective-c - Interface Builder 不会显示现有 XCode 项目中的对象?