Iphone 在UITableView中加载时,电话簿电子邮件属性返回nil

Iphone 在UITableView中加载时,电话簿电子邮件属性返回nil,iphone,Iphone,在我的示例应用程序中。我必须从iPhone中获取所有联系人,并显示每个联系人的名字、姓氏、公司名和电子邮件地址 我已经从Apple参考指南中编写了代码,但在UITableView中加载联系人时遇到了一些问题 我已使用以下代码检索到所有联系人: ABAddressBookRef addressBook = ABAddressBookCreate(); CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook); CFMuta

在我的示例应用程序中。我必须从iPhone中获取所有联系人,并显示每个联系人的名字、姓氏、公司名和电子邮件地址

我已经从Apple参考指南中编写了代码,但在UITableView中加载联系人时遇到了一些问题

我已使用以下代码检索到所有联系人:

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中。电子邮件地址除外。