2010-09-10 4 views
0

Я импортировать контакты информации в некоторых текстовых полей, но сбой приложения, если нет записи для некоторых полей, как телефон, электронная почта и т.д.Импорт адресной книги Контактная информация, как обрабатывать пустые поля?

Вот мои текстовые поля:

First Name 
    Middle Name 
    Last Name 

    Main Phone 
    Mobile Phone 

    Email Address 

    Website 

Пусть выбранный контакт не имеет второго номера телефона (в данном случае: Мобильный телефон) или нет записей URL для контакта. Приложение аварийно завершает работу.

*ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty); 
NSMutableArray *phones = [[NSMutableArray alloc] init]; 
int i; 
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) { 
    NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];   
    [phones addObject:aPhone]; 
} 

accountPhone1TextField.text = [phones objectAtIndex:0]; 
accountPhone2TextField.text = [phones objectAtIndex:1]; 
CFRelease(phoneMulti); 
[phones release];* 

Или, если я пытаюсь получить адрес электронной почты из контакта и оно не существует это приведет к краху:

NSString *anEmail = [(NSString*)ABMultiValueCopyValueAtIndex(emailMulti, i) autorelease]; 
//Variable is not a CFString 

***** ***** UPDATE

Законченное используя следующий код:

ABMutableMultiValueRef emailMulti = ABRecordCopyValue(person, kABPersonEmailProperty); 
NSMutableDictionary *myEmailDict = [NSMutableDictionary dictionaryWithCapacity:ABMultiValueGetCount(emailMulti)]; 
for (CFIndex i = 0; i < ABMultiValueGetCount(emailMulti); i++) { 
    emailLabel = ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(emailMulti, i)); 
    email = ABMultiValueCopyValueAtIndex(emailMulti, i); 
    [myEmailDict setObject:(NSString*)email forKey:(NSString*)emailLabel]; 
    CFRelease(email); 
    CFRelease(emailLabel); 
} 

ответ

2
if (phones.count > 0) { 
    accountPhone1TextField.text = [phones objectAtIndex:0]; 
} 
if (phones.count > 1) { 
    accountPhone2TextField.text = [phones objectAtIndex:1]; 
} 
+0

Я пробовал .. но NSString * anEmail = [(NSString *) ABMultiValueCopyValueAtIndex (emailMulti, i) autorelease]; сбои, потому что нет адресов электронной почты – WrightsCS

+0

Вы используете kABPersonEmailProperty? – LarsJK

+1

да, но по какой-то причине, если нет записей для полей электронной почты ... это приводит к сбою. – WrightsCS

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