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:という名前の変数で aを使用します...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 に答える