2014-01-30 200 views
0

因此,我將NSString編碼enum值作爲字符串保存在數據庫中。這是其中的一個值:NSStringEncoding - 枚舉到字符串枚舉

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]; 

等待 - 因爲要保存的字符串作爲十六進制值,將無法正常工作。

您需要使用NSScanner

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

瞭解爲什麼使用int不是字符串會更容易?