objective-c - 将枚举与 NSNumber 进行比较

标签 objective-c cocoa pointers comparison nsnumber

我正在做一些绘图,并有一个名为 Draw2DHelper 的类,它为我正在制作的绘图类型定义了一个枚举常量,以及一个属性使用类型的drawingType:

enum {
    LINE_DRAWING,
    BEZIER_PATH_DRAWING,
    FRACTAL_DRAWING,
    POINT_DRAWING
};
typedef NSNumber * drawingTypes;


@property drawingTypes drawingType;

在前面的场景中,我定义了一个 UIPickerView 来反射(reflect)我的绘图类型,并使用此代码填充与其绑定(bind)的数组(这就是我使用 NSNumber 的原因): 我现在已经将问题追溯到有关选择器及其返回数据的方式的问题。我的父 ViewController 中有以下代码:

NSNumber *myNum1 = [NSNumber numberWithInt:BEZIER_PATH_DRAWING];
NSNumber *myNum2 = [NSNumber numberWithInt:LINE_DRAWING];
NSNumber *myNum3 = [NSNumber numberWithInt:POINT_DRAWING];
NSNumber *myNum4 = [NSNumber numberWithInt:FRACTAL_DRAWING];


_nameArray = [[NSArray alloc] initWithObjects: @"Bezier Path", @"Line Drawing", @"Point Drawing", @"Fractal Drawing", nil];

_typeArray = [[NSArray alloc] initWithObjects: myNum1, myNum2, myNum3, myNum4,nil];

后来,在 pickerView didSelectRow 方法中我有这个:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent: (NSInteger)component
{
    if (component == 0)
    {
        _drawingType = [_typeArray objectAtIndex: row];
        NSString *drawingTypeName = [ _nameArray objectAtIndex:row ] ;
    }
}

当 _drawingType 被分配时,一些奇怪的事情发生了;我不确定我的指针是否正确...我正在使用字符串来填充选择器的视觉效果 - 我应该使用它们来使比较更容易吗?我究竟做错了什么? 我想我可能没有将数组正确绑定(bind)到选择器,因此 didSelectRow 方法没有返回正确的数据。想法?有建议吗?

最佳答案

我认为@vikingosegundo 的答案是正确的方法,但只是回答原来的问题:

如果您像这样定义枚举:

enum {
    LINE_DRAWING,
    BEZIER_PATH_DRAWING,
    FRACTAL_DRAWING,
    POINT_DRAWING
};
typedef NSNumber * drawingTypes;

然后您可以使用 Objective-C literals 将 NSNumber 对象与枚举进行比较

NSNumber *number = (wherever your number comes from)
if ([number isEqualToNumber:@(LINE_DRAWING)]) {
}

[number isEqualToNumber:[NSNumber numberWithInteger:LINE_DRAWIN]])相同

关于objective-c - 将枚举与 NSNumber 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193758/

相关文章:

pointers - Rust 的 Arc 和 Rc 类型与垃圾收集有何不同?

ios - 用于写入更大的 CSV 文件的 CHCSVWriter 内存使用情况

objective-c - 从大纲 View 中删除行

objective-c - 如何使用 Objective C 知道 os x 系统中有哪些软件

objective-c - msg_send 调用会产生多少开销?

无法在 CUDA 中返回指针

objective-c - 使用 NSData 时出现连接问题如何处理?

ios - Settings Bundle 切换开关只返回 YES

cocoa - 如何创建拖放 mac 安装程序?

c++ - 什么是智能指针,我应该什么时候使用它?