iphone - 核心数据和 iPhone 的 NSDecimalNumber 问题

标签 iphone core-data nsdecimalnumber

我对核心数据和 iPhone 编程相当陌生。也许这是一个显而易见的答案,所以如果有人能给我指出教程或其他资源,我将不胜感激! 我有一个核心数据实体,它是十进制类型,因为它处理货币,我读过的所有内容都说在处理货币时使用 NSDecimalNumber 。话虽如此,我一生都无法弄清楚如何在插入新对象时设置该值。这是我所拥有的

NSManagedObjectContext *moc = [self.fetchedResultsController managedObjectContext];
Envelope *envelope = [NSEntityDescription insertNewObjectForEntityForName:@"Envelope"
                                                inManagedObjectContext:moc];
[envelope setValue:@"Envelope 1" forKey:@"name"];
NSDecimalNumber *budgetNumber = [NSDecimalNumber decimalNumberWithDecimal:1.00];
[envelope setValue:budgetNumber forKey:@"budget"];

我在这里做错了什么? 提前致谢!

最佳答案

试试这个:

NSDecimalNumber *budgetNumber = [NSDecimalNumber decimalNumberWithString:@"1.00"];

PS:添加评论中提到的第二个问题的解决方案

(void)configureCell:(UITableViewCell *)cell withEnvelope:(NSManagedObject *)model{ 
     UILabel *envelopeNameLabel = (UILabel *) [cell viewWithTag:1];

     envelopeNameLabel.text = [model valueForKey:@"name"]; 

     UILabel *envelopeBudgetLabel = (UILabel *) [cell viewWithTag:2];
     envelopeBudgetLabel.text = [model valueForKey:@"budget"];
     }

'NSInvalidArgumentException', reason: '-[NSDecimalNumber isEqualToString:]: unrecognized selector sent to instance 0x653fc80' .

此问题是由将十进制数分配给字符串引起的。在将字符串分配给标签之前,您必须获取字符串表示形式。像这样的事情:

envelopeBudgetLabel.text = [[model valueForKey:@"budget"] description];

关于iphone - 核心数据和 iPhone 的 NSDecimalNumber 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5213056/

相关文章:

ios - 在 XCode 和 IOS 7 中移动文件

ios - NSDecimalNumber的数学完整性

arrays - 如果 NSDecimalNumber 大于 Uint64,如何将 NSDecimalNumber 转换为字节数组?

iphone - 如何在iPhone应用程序中定期补充游戏货币。

iphone - 如何在 subview 中添加 AVQueuePlayer 以显示 View

ios - 强制 viewDidLoad 在 iOS 上触发

objective-c - 如何将 NSDecimalNumber 转换为 NSNumber

iphone - 按方法的返回值对对象进行排序

swiftUI 核心数据 @FetchRequest 单个对象

ios - 由于代码生成核心数据问题,Swift 3 Xcode 8 无法存档应用程序