核心数据和iPhone的NSDecimalNumber问题

Joh*_*uss 5 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"];
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*ian 5

试试这个:

NSDecimalNumber *budgetNumber = [NSDecimalNumber decimalNumberWithString:@"1.00"];
Run Code Online (Sandbox Code Playgroud)

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"];
     }
Run Code Online (Sandbox Code Playgroud)

'NSInvalidArgumentException',原因:' - [NSDecimalNumber isEqualToString:]:无法识别的选择器发送到实例0x653fc80'.

此问题是由为字符串分配十进制数引起的.在将其分配给标签之前,您必须获取字符串表示.像这样的东西:

envelopeBudgetLabel.text = [[model valueForKey:@"budget"] description];
Run Code Online (Sandbox Code Playgroud)