Есть ли какое-то удобное решение, чтобы избежать явного преобразования NSNumber в int?
Я использую базовые данные, поэтому все мои числа-NSNumbers (поскольку это старая модель, я не использовал скалярное автоматическое преобразование, которое, похоже, доступно для новых базовых данных).
Итак, мой код полон следующих операторов преобразования:
[myNSNumberFromCoreDataObject intValue] which is pretty annoying...
Есть ли какое-либо удобное решение для этого, или я попал в ловушку, так как я не мог использовать скалярное моделирование основных данных?
Править: В идеале можно было бы написать какой-то препроцессорный оператор, который проверяет эти случаи и автоматически просто заменяет это автоматически - возможно ли это как-то?
2 ответа:
Вы всегда можете объявить свойства управляемых объектов как скаляры и обрабатывать преобразование в геттерах/сеттерах. Пример:
Заголовок
@interface MyEntity : NSManagedObject @property (nonatomic, assign, readwrite) NSUInteger count; @end
Реализация
@interface MyEntity () @property (nonatomic, retain, readwrite) NSNumber* dbCount; @end @implementation MyEntity @dynamic dbCount; - (void)setCount:(NSUInteger)count { self.dbCount = [NSNumber numberWithUnsignedInteger:count]; } - (NSUInteger)count { return [self.dbCount unsignedIntegerValue]; } @end