2011-12-07 20 views
1

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

- (ABRecordRef)findRecordNSString *)phoneNumber 
{ 
if (phoneNumber == nil) 
return nil; 
ABAddressBookRef addressBook = ABAddressBookCreate(); 

CFArrayRef all = ABAddressBookCopyArrayOfAllPeople(addressBook); 

CFIndex n = ABAddressBookGetPersonCount(addressBook); 

ABRecordRef record; 

//NSLog(@"The Record : %d", record); 

int count = 0; 

for(int i = 0 ; i < n ; i++) 
{ 
ABRecordRef ref = CFArrayGetValueAtIndex(all, i); 

ABMultiValueRef phones = ABRecordCopyValue(ref, kABPersonPhoneProperty); 
for(CFIndex j = 0; j < ABMultiValueGetCount(phones); j++) 
{ 

CFStringRef phoneNumberRef = ABMultiValueCopyValueAtIndex(phones, j); 

NSString *newPhoneNumber = (NSString *)phoneNumberRef; 



if([newPhoneNumber isEqualToStringhoneNumber]) 
{ 
//NSLog(@"Phone Ref: %@", phoneNumberRef); 
NSLog(@"Record New: %d", ref); 
record = ref; 

i=(int)n; 
count = 1; 
} 
CFRelease(phoneNumberRef); 
[newPhoneNumber release]; 
} 

} 
[addressBook release]; 
return record; 
} 

, но я получаю сообщение об ошибке при попытке открыть ViewController в iOS5 устройства, но он работает в тренажере и ИОС 4. ошибка

Program received signal: “EXC_BAD_ACCESS”. 
Data Formatters temporarily unavailable, will re-try after a 'continue'. (Can't find dlopen function, so it is not possible to load shared libraries.) 

Кроме того, после этой ошибки, если я принудительно закройте приложение, дважды нажав кнопку «домой», а затем закройте вручную, приложение отобразит только черный экран. Есть идеи по этому поводу?

+0

Я получаю очень похожую ошибку. Он работает в разработчике при запуске в 4.3, но сбой на 5.0. – logixologist

+0

@logixologist Я решил эту проблему. Если вам нужна помощь, дайте мне знать –

+0

@RahulVyas, возможно, вы можете ответить на свой вопрос. Он появляется как неотвеченный. – Marco

ответ

0

Просто прокомментировал линию

CFIndex n = ABAddressBookGetPersonCount(addressBook); 

и заменял это, чтобы получить общее количество записей

CFIndex n = CFArrayGetCount(all); 

Поскольку граф отличается для всех (массива) и для переменного п.

Надеюсь, это тоже поможет другим.

Смежные вопросы