Я импортировать контакты информации в некоторых текстовых полей, но сбой приложения, если нет записи для некоторых полей, как телефон, электронная почта и т.д.Импорт адресной книги Контактная информация, как обрабатывать пустые поля?
Вот мои текстовые поля:
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);
}
Я пробовал .. но NSString * anEmail = [(NSString *) ABMultiValueCopyValueAtIndex (emailMulti, i) autorelease]; сбои, потому что нет адресов электронной почты – WrightsCS
Вы используете kABPersonEmailProperty? – LarsJK
да, но по какой-то причине, если нет записей для полей электронной почты ... это приводит к сбою. – WrightsCS