ios – 枚举NSString的最佳方式
发布时间:2020-12-15 01:54:07 所属栏目:百科 来源:网络整理
导读:我挖掘方法来枚举objc对象,如NSString,我记得在Xcode4版本中有一个新功能,提供了一种新的枚举方式,但不是很清楚。有人知道吗 解决方法 好的,我回答了自己。猜猜我犯了一个错误。 这是我上面提到的新功能 typedef enum Language : NSUInteger{ Objective
|
我挖掘方法来枚举objc对象,如NSString,我记得在Xcode4版本中有一个新功能,提供了一种新的枚举方式,但不是很清楚。有人知道吗
解决方法
好的,我回答了自己。猜猜我犯了一个错误。
这是我上面提到的新功能 typedef enum Language : NSUInteger{
ObjectiveC,Java,Ruby,Python,Erlang
}Language;
这只是Xcode 4.4中的枚举的新语法,但是我觉得我们可以将“NSUInteger”交换到“NSString”,我很愚蠢。 所以这里是我发现的方式: http://longweekendmobile.com/2010/12/01/not-so-nasty-enums-in-objective-c/ // Place this in your .h file,outside the @interface block
typedef enum {
JPG,PNG,GIF,PVR
} kImageType;
#define kImageTypeArray @"JPEG",@"PNG",@"GIF",@"PowerVR",nil
...
// Place this in the .m file,inside the @implementation block
// A method to convert an enum to string
-(NSString*) imageTypeEnumToString:(kImageType)enumVal
{
NSArray *imageTypeArray = [[NSArray alloc] initWithObjects:kImageTypeArray];
return [imageTypeArray objectAtIndex:enumVal];
}
// A method to retrieve the int value from the NSArray of NSStrings
-(kImageType) imageTypeStringToEnum:(NSString*)strVal
{
NSArray *imageTypeArray = [[NSArray alloc] initWithObjects:kImageTypeArray];
NSUInteger n = [imageTypeArray indexOfObject:strVal];
if(n < 1) n = JPG;
return (kImageType) n;
}
仅供参考。第二个示例代码的原始作者为枚举处理创建了一个类别。只是添加到你自己的NSArray类定义的东西。 @interface NSArray (EnumExtensions)
- (NSString*) stringWithEnum: (NSUInteger) enumVal;
- (NSUInteger) enumFromString: (NSString*) strVal default: (NSUInteger) def;
- (NSUInteger) enumFromString: (NSString*) strVal;
@end
@implementation NSArray (EnumExtensions)
- (NSString*) stringWithEnum: (NSUInteger) enumVal
{
return [self objectAtIndex:enumVal];
}
- (NSUInteger) enumFromString: (NSString*) strVal default: (NSUInteger) def
{
NSUInteger n = [self indexOfObject:strVal];
if(n == NSNotFound) n = def;
return n;
}
- (NSUInteger) enumFromString: (NSString*) strVal
{
return [self enumFromString:strVal default:0];
}
@end
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
