Код UIAddressBook помещает ошибку на устройство - PullRequest
0 голосов
/ 06 января 2011

Я тестирую следующий код на симуляторе, он работает нормально, но когда я выбираю устройство и запускаю его, это дает исключение.

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:]: попытка вставить ноль 2011-01-06 12: 12: 42.397 Назначение [2849: 207] Стек: ( 843263261, 825818644, 842812211, 842812115

Пожалуйста, помогите

1 Ответ

1 голос
/ 06 января 2011

Вы добавляете nil в массив (как говорится в сообщении)

В процессе дедукции я вижу, что вы добавляете объекты в массив в этой строке

[tempPeoples addObject: name];

Таким образом, вполне вероятно, что для этого фрагмента кода происходит ошибка.

Вероятно, не все изКонтакты имеют имя, которое, скорее всего, подходит для контактов, которые являются бизнесом, а не людьми.

Вы можете установить точку останова в коде и запустить ее через отладчик, чтобы увидеть, какие условия вызывают это.

...