簡體   English   中英

如何枚舉 NSString?

[英]How do I enumerate on NSString?

如何枚舉 NSString?

我正在嘗試做的示例:

enum eCat{
    dog,
    cat,
    mouse,
    bunny
};
@interface

@implementation 
....
enum eCat Cate;
NSString *yoda = @"mouse";
Cate = [yoda intValue];
NSLog(@"Hello: %d",Cate);

希望結果是

Hello: 2

謝謝

Objective-C 中沒有直接支持這種枚舉。

相反,創建一個字符串數組並查找一個條目:

    static NSArray* enumeration=nil;
    if(!enumeration){
           enumeration=[[NSArray arrayWithObjects:@"AAA",@"BBB",@"CCC",nil] retain];
    }

然后稍后使用它:

    NSInteger i=[enumeration indexOfObject:@"BBB"];
    /*  i is now 1 */

這與您的問題無關,但請不要以大寫字母開頭變量名,例如您的Cate 這違反了 Objective-C 的約定。

您必須自己創建一個映射(字符串→枚舉) 一種可能性是這樣的(免責聲明:僅大腦編譯):

#define CAT_(a, b) a##b
#define CAT(a, b) CAT_(a, b)
#define E(en) [NSNumber numberWithInt:en], CAT(@, #en),
NSDictionary *mapping = [NSDictionary dictionaryWithObjectsAndKeys:
                          // ...
                          E(mouse)
                          E(bunny)
                          nil];

NSNumber *result = [mapping objectForKey:@"mouse"];
if (!result) {
    // ... oops
} else {
    enum eCat cate = [result intValue];
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM