如何解决NULL cString崩溃

时间:2013-02-03 14:57:21

标签: ios objective-c encoding cstring

我正在尝试使用以下编码修复程序崩溃:

  // encoding fix
    NSString *correctStringTitle = [NSString stringWithCString:[[item objectForKey:@"main_tag"] cStringUsingEncoding:NSISOLatin1StringEncoding] encoding:NSUTF8StringEncoding];

    cell.titleLabel.text = [correctStringTitle capitalizedString];

我的崩溃日志输出状态:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSString stringWithCString:encoding:]: NULL cString'

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您似乎认为必须进行双重转换才能获得正确的结果。它不是,也不可能(这就是为什么对cStringUsingEncoding:NSISOLatin1StringEncoding的调用返回NULL)。只需将此部分保留下来并直接分配给correctStringTitle

答案 1 :(得分:0)

在尝试从html和我的解决方案中获取文本时,我遇到了与意大利语重音字符相同的问题,以避免cStringUsingEncoding:NSISOLatin1StringEncoding返回NULL的情况确保当您从使用的数据中获取html时:

[[NSString alloc] initWithData:self.responseData encoding:NSISOLatin1StringEncoding]

而不是

encoding:NSUTF8StringEncoding