0

私はiPhoneの開発に不慣れです。私はアプリを開発しています。名簿から連絡先の詳細(名、メールID、電話番号など)をプログラムで取得する必要がありました。そして、これらの値は配列に格納されます。これはiamがうまく機能していますが、問題はnull連絡先が追加されていることです。つまり、名前だけで電子メールIDがない場合は、null値が追加されないようにする方法を意味します。これは私が使用しているコードです。

ABRecordRef ref;
ABAddressBookRef m_addressbook = ABAddressBookCreate();

CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
NSLog(@" n people count values %ld",nPeople);

for (int i=0; i<nPeople; i++)
{ 
    AFContacts *contactOfAPerson = [[AFContacts alloc] init];
    ref = CFArrayGetValueAtIndex(allPeople,i);
    [contactOfAPerson setEmail:(NSString *)ABRecordCopyValue(ref, kABPersonEmailProperty)];
    [contactOfAPerson setFirstName:(NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty)];
    //[contactOfAPerson setPhoneNumber:(NSString *)ABRecordCopyValue(ref, kABPersonPhoneMobileLabel)];
    [contactList addObject:contactOfAPerson];
    [contactOfAPerson release];
}
CFRelease(ref);
}
4

2 に答える 2

0

私が正しく理解していれば、メールアドレスを持たない連絡先をアレイに追加したくないでしょう。if条件を使用して、配列に連絡先を追加してみてください

ABMultiValueRef emailAddresses = ABRecordCopyValue(ref, kABPersonEmailProperty);

if (ABMultiValueGetCount(emailAddresses) > 0)
{
   [contactOfAPerson setEmail:(NSString *)ABRecordCopyValue(ref, kABPersonEmailProperty)];
   [contactOfAPerson setFirstName:(NSString *)ABRecordCopyValue(ref, kABPersonFirstNameProperty)];
   [contactList addObject:contactOfAPerson];
}
于 2012-04-12T15:36:12.913 に答える
0

これをチェックアウトすると、連絡先とそのすべての詳細をインポートするのが最善です

http://iphoneappcode.blogspot.in/2011/05/abpeoplepickernavigationcontroller.html

于 2014-05-08T07:31:45.957 に答える