1

アプリをクラッシュさせるこのコード行があります。

 trimmedtext=[NSString stringWithCString:[mycharstring cStringUsingEncoding:[ NSString defaultCStringEncoding ] ] encoding:NSUTF8StringEncoding];

エラーは次のとおりです。*キャッチされなかった例外によるアプリの終了'NSInvalidArgumentException'、理由:'* + [NSString stringWithCString:encoding:]:NULL cString'

NSStringにNULL文字があると思うのでクラッシュします。

NSLogは私にこの'friendXx'を与えます、文字列に絵文字があります!

この問題を解決するにはどうすればよいですか?

助けていただければ幸いです。

正解:text = [NSString stringWithCString:[mycharstring UTF8String] encoding:NSUTF8StringEncoding];

4

1 に答える 1

6

NSStringにNULL文字があるため、クラッシュします。

そうでないことを除いて。

問題は、(型の)C文字列const char *が値がのポインタであるということですNULL。つまり、それは無効なポインタです。これの主な理由は、たとえば、mycharstring変数がである可能性がありますnil

編集:したがって、デフォルトのC文字列エンコーディングでは処理できない記号が文字列に含まれているため、NULLが返されます。[mycharstring UTF8String]代わりに使用してみてください。

于 2012-12-17T23:45:29.290 に答える