UIAddressBook代码将错误放在设备上

时间:2011-01-06 07:18:02

标签: iphone addressbook

我在模拟器上测试以下代码,它运行正常,但是当我选择设备并运行时,它会给出异常。

ABAddressBookRef addressBook = ABAddressBookCreate();

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);  
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);

tempPeoples= [NSMutableArray arrayWithCapacity:0];


for(int i=0;i<nPeople;i++){

    ABRecordRef i1=CFArrayGetValueAtIndex(allPeople, i);

    NSString* name = (NSString *)ABRecordCopyValue(i1,kABPersonFirstNameProperty);

    [tempPeoples addObject:name];

//  [peoples addObject:i1];

}// end of

发生以下异常

2011-01-06 12:12:42.384约会[2849:207] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [NSCFArray insertObject:atIndex:]:试图插入nil' 2011-01-06 12:12:42.397预约[2849:207]筹码:(     843263261,     825818644,     842812211,     842812115

请帮忙

1 个答案:

答案 0 :(得分:1)

您正在向数组添加nil(如消息所示)

通过演绎过程,我看到你正在向这一行的数组中添加对象

  

[tempPeoples addObject:name];

因此,对于这段代码,这可能是错误发生的地方。

可能并非所有的联系人都有一个名字,这可能是商家而非人的联系人的情况。

您可以在代码中放置一个断点并通过调试器运行它以查看导致此问题的条件。