サンプルアプリケーションでは。私はiPhoneからすべての連絡先を取得し、それぞれのfirstName、lastName、companyName、およびemailアドレスを表示する必要があります。UITableViewでロード中に電話帳の電子メールのプロパティが返されない場合
私は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);
私はviewdidAppear
でのコード行を使用する場合、それは正常に動作します。しかし、私はこの同じメソッドをUITableViewDelegateメソッド- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
で使用します。それは電子メールアドレスを返さなかった。
このような問題が発生したことがありますか?
はい私は試みました。しかし、電子メールを取得しませんでした。もう一つの情報は、ファーストネーム、ラストネーム、会社名です。すべてがテーブルビューに正しく表示されます。 – karan