Iphone 在UITableView中加载时,电话簿电子邮件属性返回nil
在我的示例应用程序中。我必须从iPhone中获取所有联系人,并显示每个联系人的名字、姓氏、公司名和电子邮件地址 我已经从Apple参考指南中编写了代码,但在UITableView中加载联系人时遇到了一些问题 我已使用以下代码检索到所有联系人:Iphone 在UITableView中加载时,电话簿电子邮件属性返回nil,iphone,Iphone,在我的示例应用程序中。我必须从iPhone中获取所有联系人,并显示每个联系人的名字、姓氏、公司名和电子邮件地址 我已经从Apple参考指南中编写了代码,但在UITableView中加载联系人时遇到了一些问题 我已使用以下代码检索到所有联系人: ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); CFMuta
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(
kCFAllocatorDefault,
CFArrayGetCount(people),
people
);
CFArraySortValues(
peopleMutable,
CFRangeMake(0, CFArrayGetCount(peopleMutable)),
(CFComparatorFunction) ABPersonComparePeopleByName,
(void*) ABPersonGetSortOrdering()
);
CFRelease(addressBook);
CFRelease(people);
CFRelease(peopleMutable);
ABRecordRef record = [peopleMutable objectAtIndex:i];
ABMultiValueRef emails = (ABMultiValueRef) ABRecordCopyValue(record, kABPersonEmailProperty);
NSLog(@"ABMultiValueGetCount %d",ABMultiValueGetCount(emails));
if(ABMultiValueGetCount(emails))
emailID = (NSString *)ABMultiValueCopyValueAtIndex(emails, 0);
当我在viewdide中使用这行代码时,它工作正常。但是当我在UITableViewDelegate方法-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath中使用相同的方法时。它没有返回电子邮件地址
有人见过这样的问题吗?我想,当您从tableView:cellForRowAtIndexPath:
访问peopleMutable时,它是零的,因为您稍后加载数据,然后tableView重新加载数据
填充peopleMutable
数组后调用[tableView reloadData]
。是的,我尝试过。但没有收到电子邮件。还有一个信息是,名字、姓氏、公司名都正确显示在tableView中。电子邮件地址除外。