2012-06-29 1 views
0

Я новичок в программировании для iPhone. В моем проекте, у меня есть в файле заголовка в enum:Как узнать, какое перечисление в настоящее время исчерпано из нескольких перечислений

enum SelectionType 
{ 

    BookSelection, 
    StartChapter, 
    EndChapter 
}SType; 

В моем проекте, я хочу знать, какие enum я прямо сейчас. Для этого я попытался следующие, но это не работает:

NSLog(@"stype is %c",SType); 

Какой формат спецификатор я должен использовать, чтобы получить перечисление в NSLog?

ответ

0
enum SelectionType { 

BookSelection==0,//system provide the default value 0 for first enum then increase by one. 
StartChapter==1, 
EndChapter==2 
}SType; 
//then you check with 

if(sType==0) 
    { 
//do something 
} 


else if(sType==1) 
{ 

} 

else 
{ 

} 
//you can use 
NSLog(@"Enum number=%i",sType); 
0

enum в основном ввод type type. Вы должны использовать спецификатор формата% d.

2

Вам нужно будет сделать это самостоятельно. C не обладает такой способностью отражать. Вот функция, которую вы могли бы использовать:

const char *STypeName(SType t) 
{ 
    switch (t) { 
    case BookSelection: return "BookSelection"; 
    case StartChapter: return "StartChapter"; 
    case EndChapter: return "EndChapter"; 
    default: return NULL; 
    } 
} 

И тогда вы можете вызвать функцию SelectionTypeName, чтобы получить имя:

SType stype = ...; 
NSLog(@"stype = %s", STypeName(stype)); 
0

This method с подобным вопросом, позволит вам решить эту проблему раз. Серия макросов, которые помогут вам сопоставить между значением перечисления и его строковым представлением.

Смежные вопросы