NSStringEncoding - 枚举到枚举的字符串

时间:2014-01-30 05:48:55

标签: objective-c enums

所以我将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];

如何撰写缺失的行?

1 个答案:

答案 0 :(得分:1)

没有理由将enum值转换为字符串。只需将其保存并以int的形式将其读回。

但您对原始问题的简短回答是:

NSStringEncoding encoding = [encodingValueAsString intValue];

等待 - 由于您将字符串保存为十六进制值,因此无效。

您需要使用NSScanner

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

了解为什么使用int代替字符串会更容易?