使用NSISOLatin1StringEncoding转换语言字符[ios]

时间:2013-03-05 21:01:45

标签: iphone ios objective-c nsstring

我正在提取一些语言句子(使用不同的语言)并在TableView中显示它们(每行最多5行),当用户点击任何行时,我将用户导航到新屏幕并在那里显示全文。 / p>

我遇到的问题是,转换字符在设备上正确显示需要花费太多时间。

我编写了以下代码来转换每行的json文本:

NSString *msgDesc = [myContentsArray objectAtIndex:indexPath.row];

char const *cStr = [msgDesc cStringUsingEncoding:NSISOLatin1StringEncoding];

msgDesc = [NSString stringWithCString: cStr encoding:NSUTF8StringEncoding];

感谢您的帮助。

此致

Reno Jones

1 个答案:

答案 0 :(得分:2)

由于转换时间过长,您应该将其从tableView:cellForRowAtIndexPath:方法移出到从数据源中提取数据的代码,在那里进行转换,然后将其存储起来以备将来使用。

NSMutableArray *myContentsArrayConverted添加到您的班级,然后将所有内容转换为该版本,并在每次必须显示字符串时使用tableView:cellForRowAtIndexPath:代替执行转化:

for (int i = 0 ; i != myContentsArray.count ; i++) {
    NSString *msgDesc = [myContentsArray objectAtIndex:i];
    char const *cStr = [msgDesc cStringUsingEncoding:NSISOLatin1StringEncoding];
    [myContentsArrayConverted addObject:[NSString stringWithCString: cStr encoding:NSUTF8StringEncoding]];
}

现在你可以用更快的速度替换慢速代码

NSString *msgDesc = [myContentsArrayConverted objectAtIndex:indexPath.row];