我正在使用核心数据,所以我所有的数字都是 NSNumbers(因为它是一个旧模型,我没有使用似乎可用于新核心数据的标量自动转换)。
所以我的代码充满了这些转换语句:
[myNSNumberFromCoreDataObject intValue] which is pretty annoying...
是否有任何方便的解决方案,或者我现在被困住了,因为我无法使用标量核心数据建模?
编辑:理想情况下,可以编写某种预处理器语句来检查这些情况并自动自动替换它——这可能以某种方式吗?
您始终可以将托管对象上的属性声明为标量并在 getter/setter 中处理转换。例子:
标题
@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
您可以在返回 int 的 NSManagedObject 子类上编写类别方法,例如
- (int)myNumberInt
{
return [self.myNumber intValue];
}