3

我正在使用核心数据,所以我所有的数字都是 NSNumbers(因为它是一个旧模型,我没有使用似乎可用于新核心数据的标量自动转换)。

所以我的代码充满了这些转换语句:

[myNSNumberFromCoreDataObject intValue]   which is pretty annoying...

是否有任何方便的解决方案,或者我现在被困住了,因为我无法使用标量核心数据建模?

编辑:理想情况下,可以编写某种预处理器语句来检查这些情况并自动自动替换它——这可能以某种方式吗?

4

2 回答 2

3

您始终可以将托管对象上的属性声明为标量并在 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
于 2012-07-24T14:00:26.177 回答
0

您可以在返回 int 的 NSManagedObject 子类上编写类别方法,例如

- (int)myNumberInt
{
    return [self.myNumber intValue];
}
于 2012-07-24T13:59:25.240 回答