У меня проблема с целочисленным хранением основных данных (я выбрал int16, потому что они имеют максимум 6 знаков).
моя модель держит
Entity: 'Expense'
the attribute in question is:
@property (nonatomic, retain) NSNumber * month;
это было автоматически реализовано как NSNumber XCode (редактор> createManagedmodelsubclass)
month содержит короткий идентификатор для каждого месяца. Пример
201203 //would be march of 2012
Я сохраняю новые сущности с этим фрагментом:
[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 после прочтения моих сущностей ..
есть идеи?