2012-06-26 8 views
1

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

//Since there are multiple email labels, I iterate through them and check which one matches the string "Home" and that is the home email 
if([emailLabel isEqualToString:@"Home"]){ 

     //Here is where I check if there is actually a home email value   
     if ((__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emailsMultiValueRef, emailsCount) != NULL){ 

      email = (__bridge_transfer NSString *)ABRecordCopyValue(currentPerson, kABPersonEmailProperty); 
     } 

     //If the email property does not exist 
     else{ 

      email = @"NULL"; 
     } 
    } 

Мой вопрос заключается в следующем: в этой строке if ((__bridge_transfer NSString *)ABMultiValueCopyValueAtIndex(emailsMultiValueRef, emailsCount) != NULL), я сравниваю значение, скопированное в виде строки nil или NULL? Я не уверен, работает ли проверка значений nil.

Заранее благодарен!

ответ

0

Я проверял, было ли это нуль правильным способом (сравнивая значение ABMultiValueCopyValueAtIndex(emailsMultiValueRef, emailsCount) с NULL).

+0

Это не работает, но – HarshIT

+0

Это происходит сбой, если заявление, где я сравниваю ..... – HarshIT

+0

@Hadley - Он работал для меня, так это означает, что есть ошибка с кодом/базы данных контактов. Вы могли бы отправить комментарий с вашей проблемой, и я мог бы попытаться исправить это, но вы пошли вперед и назад, проголосовав за правильный ответ на мой вопрос. – pasawaya

0

Вот собственно Описание поставщика-

Если и просто хотите, чтобы заполнить адресную книгу и после выбора любого контакта вы хотите, что человек имеет электронную почту или нет, то сделать это ->

- (BOOL)peoplePickerNavigationController: (ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { 




NSMutableArray *personEmails=[NSMutableArray new]; 
ABMutableMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty); 


    if (ABMultiValueGetCount(multi) > 0) { 

     for (CFIndex i = 0; i < ABMultiValueGetCount(multi); i++) { 
      CFStringRef emailRef = ABMultiValueCopyValueAtIndex(multi, i); 
      [personEmails addObject:(NSString *)emailRef]; 
      CFRelease(emailRef); 
     } 
    } 
    else{ 

     UIAlertView *errorAlert = [[UIAlertView alloc] initWithTitle:@"Oops!! \ue403" message:@"No Email addredd found !\n\n " delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles: nil]; 
     [errorAlert show]; 
     [errorAlert release]; 
    } 
    CFRelease(multi); 

}

1

Попробуйте это. Я могу получить адрес электронной почты без каких-либо проблем.

-(BOOL)peoplePickerNavigationControllerenter code here:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person { 

return YES; 

} 


-(BOOL)peoplePickerNavigationController(ABPeoplePickerNavigationController*)peoplePicker 
    shouldContinueAfterSelectingPerson:(ABRecordRef)person 
          property:(ABPropertyID)property 
          identifier:(ABMultiValueIdentifier)identifier 
{ 


    if (kABPersonEmailProperty == property) 
{ 

     ABMultiValueRef multi = ABRecordCopyValue(person, kABPersonEmailProperty); 

     NSString *email = (__bridge NSString *)ABMultiValueCopyValueAtIndex(multi, identifier); 

     NSLog(@"email: %@", email); 

     [self dismissModalViewControllerAnimated:YES]; 

     return NO; 
    } 
    return YES; 
} 
Смежные вопросы