所以我将NSString
编码枚举值作为字符串保存在数据库中。这是其中一个值:
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];
如何撰写缺失的行?
答案 0 :(得分:1)
没有理由将enum
值转换为字符串。只需将其保存并以int
的形式将其读回。
但您对原始问题的简短回答是:
NSStringEncoding encoding = [encodingValueAsString intValue];
等待 - 由于您将字符串保存为十六进制值,因此无效。
您需要使用NSScanner
:
NSScanner *scanner = [NSScanner scannerWithString:encodingValueAsString];
NSStringEncoding encoding;
[scanner scanHexInt:&encoding];
了解为什么使用int
代替字符串会更容易?