0

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

我遇到的问题是,将字符转换为在设备上正确可见需要太多时间。

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

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

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

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

谢谢您的帮助。

问候,

雷诺琼斯

4

1 回答 1

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];
于 2013-03-05T21:12:05.700 回答