2014-01-30 4 views
0

Итак, я сохраняю значение перечисления NSString в базе данных в виде строки. Это одно из значений:NSStringEncoding - enum to string to enum

NSUTF16LittleEndianStringEncoding = 0x94000100, 

И я спасаю его как строку со значением 0x94000100. Моя цель состоит в том, чтобы прочитать это значение как NSString, но затем превратить его в значение можно использовать для кодирования:

 NSString* encodingValueAsString = [object objectForKey:kWSWordlistFilesEncodingKey]; 

     // Convert 'encodingValueAsString' to variable 'encoding' that can act as enum 

     NSString* dataString = [[NSString alloc] initWithData:data 
                  encoding:encoding]; 

Как я пишу, что отсутствует линия?

ответ

1

Нет причин для преобразования значения enum в/из строки. Просто сохраните его и прочитайте его как int.

Но короткий ответ на исходный вопрос:

NSStringEncoding encoding = [encodingValueAsString intValue]; 

Wait - это не будет работать, так как вы сохраняете строку как шестнадцатеричное значение.

Вы должны использовать NSScanner:

NSScanner *scanner = [NSScanner scannerWithString:encodingValueAsString]; 
NSStringEncoding encoding; 
[scanner scanHexInt:&encoding]; 

Смотрите, почему использование int вместо строки будет легче?