gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:49:25 25 4
gpt4 key购买 nike

我正在做一些绘图,并有一个名为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com