2011-01-06 9 views
0

시뮬레이터의 코드를 테스트하면 작동하지만 장치를 선택하고 실행하면 예외가 발생합니다. 12 : 예외 다음UIAddressBook 코드가 장치에 오류를 발생시킵니다.

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 발생 42.384 약속 [2849 : 207] 앱 종단 * 의한 캐치되지 않는 예외 'NSInvalidArgumentException', 이유에 「*을 - [NSCFArray을 은 insertObject : atIndex :] : 12 : 42.397 약속 [2849 : 207] 스택 ( 843,263,261, 825,818,644 , 842,812,211, 842,812,115

항변 시도 '전무 2011-01-06 12을 삽입 자체 도움말

답변

1

(메시지가 말한대로) 당신은 공제의 프로세스에 의해

배열에 nil을 추가하고, 당신이 줄

에서 배열에 객체를 추가하는 것을 볼 수 [tempPeoples addObject : 이름];

따라서이 코드 스 니펫에서는 오류가 발생하는 곳입니다.

아마도 모든 연락처에는 이름이 없으므로 사람이 아닌 비즈니스 인 연락처의 경우 일 수 있습니다.

코드에 중단 점을 넣고 디버거를 통해 실행하면 어떤 조건에서이 문제가 발생하는지 확인할 수 있습니다.

+0

아주 멋진 답변입니다. – Ali

관련 문제