是否有某种方便的解决方案来避免显式NSNumber转换为int?

时间:2012-07-24 13:49:16

标签: iphone ios core-data nsnumber

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

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

[myNSNumberFromCoreDataObject intValue]   which is pretty annoying...

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

编辑: 理想情况下,人们可以编写某种预处理器语句来检查这些情况,并自动将其自动替换 - 这可能以某种方式实现吗?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您可以在NSManagedObject子类上编写一个类别方法,它返回一个int,例如:

- (int)myNumberInt
{
    return [self.myNumber intValue];
}