2

以下是我的代码

NSString *res = [valueArray valueForKey:@"key"];
NSData *newdata=[res dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];
res=[[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];
nameTxt.text = [NSString stringWithFormat:@"%@",res]; // Assigning to textfield

这工作正常。但有时它会返回 NULL 数据,主要是在字符串包含大数据时发生。

任何人都知道为什么会这样?

4

1 回答 1

2
NSString *res = [valueArray valueForKey:@"key"];

这很有趣:valueForKey:在名为...Array. 宁可好像是一本字典?

NSData *newdata = [res dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES];

从字符串创建原始 UTF8 编码数据始终有效:不需要allowLossyConversion.

res = [[NSString alloc] initWithData:newdata encoding:NSNonLossyASCIIStringEncoding];

将 UTF8 编码的原始数据转换为 ASCII 仅在 UTF8 不包含任何超出非常受限的 ASCII 范围的字符时才有效。否则nil返回。

这似乎是这段代码混淆的唯一原因:过滤掉非 ASCII 字符串。否则转换没有任何意义。

于 2013-02-26T10:24:39.513 回答