【发布时间】:2013-06-23 16:57:15
【问题描述】:
如何创建一个包含 NSNumber 的枚举? 我的应用程序中有一个 coredata 持久性,一个实体的状态属性在 coredata 中声明为整数 16,这意味着它是一个 NSNumber
我希望能够声明我的枚举以包含 NSNumber 而不是 int,这样我就可以使用它们而不必编写这个可怕的东西
enum {
ERROR,
INCOMPLETE,
OK
} EventStatus;
[myObjectOnCoredata setStatus: [[NSNumber alloc] initWithInt:INCOMPLETE]];
只是:
[muObjectOnCoredata setStatus: INCOMPLETE];
我认为这应该是可能的,因为我可以将枚举声明为 NSInteger,但它仍然对我不利
感谢您的帮助
【问题讨论】:
-
NSNumber和NSInteger之间存在巨大差异。NSInteger只是一个整数类型(类型定义为int或long,取决于系统 - 在 iOS 上为int),而NSNumber是一个对象(NSNumber *是它的指针以及你如何使用它),这意味着它必须在运行时创建,因此不能像enums 那样是编译时常量。 -
#define INCOMPLETE [NSNumber numberWithInt:1] -
@holex
#define INCOMPLETE @1。它仍然是一个对象,应该与isEqual进行比较 -
@Kevin,你是对的,显而易见的解决方案是为
status属性制作适当的 getter 和 setter。老实说,我会否决这个问题(但我不会),因为像“我懒得实现 setter 或 getter 来实现我想要的”这样的问题。 -
@holex 我不明白为什么要投反对票,实际上我没想过要做一个 getter 和 setter,希望我可以声明一个 NSNumber 枚举在我看来似乎更直接,现在我明白了更多关于那些我可以做出慎重选择的类型,谢谢
标签: objective-c c enums