以下是我的代码
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数据,大多数情况下,当字符串内容为大数据时会发生。
任何人都知道为什么会这样?
答案 0 :(得分: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字符串。否则转换没有丝毫意义。