【发布时间】:2012-03-25 12:27:07
【问题描述】:
核心数据存储整数时遇到问题(我选择 int16 是因为它们最多有 6 个符号)。
我的模型持有
Entity: 'Expense'
the attribute in question is:
@property (nonatomic, retain) NSNumber * month;
它被 Xcode 自动实现为 NSNumber (Editor > createManagedmodelsubclass)
month 为每个月保存一个简短的标识符。例子
201203 //would be march of 2012
我用这个 sn-p 存储新实体:
[newExpense setValue:monthNumber forKey:@"month"];
效果很好。在我存储之前,monthNumber 始终具有正确的值。
我使用获取方法检索对象并将它们存储在一个名为allExpenses 的数组中。数组计数是真实的,我有正确数量的实体。
现在我这样做了:
NSMutableArray *thisMonthExpenses = [[NSMutableArray alloc]init ];
for (Expense *entity in allExpenses) {
int tempMonth = [[entity month]intValue];
if (tempMonth == month) {
[thisMonthExpenses addObject:entity];
}
}
过滤掉属于当前月份的正确实体。
month // is an integer that holds the encoded month (again: correctly!)
但不知何故代码:
int tempMonth = [[entity month]intValue];
不返回 201203,而是奇怪的 4595(总是相同的值)。
这段代码也是如此:
for (Expense *entity in monthExpenses) {
if ([entity day].intValue == todayNumber.intValue) { //HERE ENTITY DAY.INTVALUE RETURNS A COMPLETELY WRONG INTEGER!
[thisDayExpenses addObject:entity];
}
}
我似乎遗漏了一些东西 - 但我不知道是什么,我试了 2 个小时,但在阅读我的实体后总是得到错误的 int 值..
有什么想法吗?
【问题讨论】:
-
当您将该值分配给托管对象时,monthNumber 绝对是一个 NSNumber 吗?你不显示原产地,也许它需要装箱?
-
例如:[newExpense setMonth:[NSNumber numberWithInt:monthNumber]];
-
我也试过@isaac。但这没有任何区别。尝试检查时,我仍然返回错误的 int :/
-
我在最后一段代码中添加了 CAPS 注释,再次向您展示出了什么问题。
标签: objective-c ios core-data