Core Data ストアに対するフェッチ リクエストの結果をループしています。結果リスト内のオブジェクトごとに、文字列型のいくつかの属性を読み取り、それらを 1 つの文字列に連結しています (CSV 形式のファイルとして出力します)。
データセット内の特定のレコードの特定の文字列が原因で問題が発生しています。不要な文字 (漢字、アラビア語など) が文字列の末尾に追加され、結果の文字列に正しく追加されず、CSV ファイル形式がホース。
フェッチ結果をループして文字列を追加するための私のコードは次のとおりです。
NSMutableString *reportString = [[NSMutableString stringWithFormat:@"...\n"]; for (int s = 0; s < [frc.sections count]; s++) { for (int r = 0; r < [[frc.sections objectAtIndex:s] numberOfObjects]; r++) { NSIndexPath *i = [NSIndexPath indexPathForRow:r inSection:s]; Thread *thread = [frc objectAtIndexPath:i]; NSMutableString *activity = [NSMutableString stringWithString:[thread activity]]; . . . [reportString appendString:activity]; [reportString appendFormat:@",%@\n", client]; } }
ここではstringWithStringを使用していますが、他のいくつかの文字列メソッドも使用しており、同様の破損した結果が得られます。ある時、アラビア文字が現れました。別の時は"...random...FSO_CARRIER_ATT@2X.png"でした。また、(フェッチされた結果コントローラーの代わりに) 別のフェッチ結果配列を使用してみました。
奇妙なことの 1 つは、lldb からPOを実行すると、文字列が正しく表示されることです。これは、文字列をマッシュアップしようとしているときに、この「破損」がテーブル ビューに表示されない理由を説明している可能性があります。
私の質問
Core Data モデルから文字列値を間違ってコピーしたために、この問題が発生していますか? 私が見逃しているテクニックはありますか?
アップデート:
監視対象の変数と値の NSLog のスクリーンショット: