Zer*_*rho 4 c enums objective-c
如何创建包含NSNumber的枚举?我的应用程序中有一个coredata持久性,一个实体在coredata中声明为Integer 16的status属性,这意味着它是一个NSNumber
我希望能够声明我的枚举以包含NSNumber而不是int,所以我可以使用它们而不必编写这个可怕的东西
enum {
ERROR,
INCOMPLETE,
OK
} EventStatus;
[myObjectOnCoredata setStatus: [[NSNumber alloc] initWithInt:INCOMPLETE]];
Run Code Online (Sandbox Code Playgroud)
而且只是:
[muObjectOnCoredata setStatus: INCOMPLETE];
Run Code Online (Sandbox Code Playgroud)
我认为这是可能的,因为我可以将枚举声明为NSInteger,但它对我来说仍然不好
谢谢你的帮助
JDS*_*JDS 18
从去年WWDC开始,您可以使用盒装表达式来创建NSNumbers:
@(INCOMPLETE) // Equals to [NSNumber numberWithInt:INCOMPLETE]
Run Code Online (Sandbox Code Playgroud)
另请参见此处:http://clang.llvm.org/docs/ObjectiveCLiterals.html
有一次它说它在任何Apple编译器中都不可用,但现在Clang是默认版本,它支持3.2版本
或者,在NSManagedObject的子类中添加一个方法enum EventStatus,创建一个数字并调用原始方法
Sul*_*han 12
将managedObject的状态命名为statusNumber.
然后
@dynamic statusNumber
- (void)setStatus:(EventStatus)status {
self.statusNumber = [[NSNumber alloc] initWithInt:status]];
}
- (EventStatus)status {
return [self.statusNumber intValue];
}
Run Code Online (Sandbox Code Playgroud)
只需将转化隐藏到您的实施中即可.