問題
破損したvCardデータABPerson
を使用してを作成しようとすると、アプリがクラッシュします。ABPersonCreatePeopleInSourceWithVCardRepresentation()
これはコンソール出力です:
2012-07-14 20:20:37.530 vCardTest[4418:707] vCard Syntax Error, character: 7 : /
2012-07-14 20:20:37.531 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.534 vCardTest[4418:707] vCard Syntax Error, character: 14 : n
2012-07-14 20:20:37.536 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.539 vCardTest[4418:707] vCard Syntax Error, character: 21 : i
2012-07-14 20:20:37.543 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.546 vCardTest[4418:707] vCard Syntax Error, character: 28 : o
2012-07-14 20:20:37.548 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.550 vCardTest[4418:707] vCard Syntax Error, character: 35 : s
2012-07-14 20:20:37.553 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.555 vCardTest[4418:707] vCard Syntax Error, character: 42 : g
2012-07-14 20:20:37.556 vCardTest[4418:707] Malformed BEGIN
2012-07-14 20:20:37.559 vCardTest[4418:707] Malformed BEGIN
それを解決するために私がやろうとしたこと
- Appleのドキュメントには、データが破損したときに何が起こるかについては触れられていません。
- 試しましたが、例外は
@try
あり@catch
ません。 - フレームワークはこれらすべての構文エラーをログに記録しているので、何かが起こっていることを知っていると確信しています。どうやって捕まえるのかわからない。
破損したデータを気にする理由
vCardを生成する入力文字列は、私が制御していないさまざまなソースからのものであるため、多くの場合、入力データはvCardでさえありません。私は有効なvCardの解析のみを懸念しているため、vCard以外のデータを検出して破棄できることが重要です。