问题
当我尝试使用损坏的 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 数据并将其丢弃很重要的原因。