在我的应用中,我想获取有电子邮件的手机通讯录的姓名和电子邮件,然后将其列在桌面视图中。
是否可以使用手机地址簿填写的名称和电子邮件字段创建用户对象,然后将这些对象放在tableview中?
任何线索都将受到赞赏。
答案 0 :(得分:8)
您需要遵循的方法是:
首先,您需要获取AddressBook的引用,然后获取数组中所有联系人的引用。然后你需要枚举数组并检查他们的email属性是否为nil,如果不是nil,将该联系人添加到另一个数组,然后使用该数组作为tableView的数据源:)
如果您愿意,我可以为您提供检查地址簿中联系人的电子邮件条目的代码,然后过滤这些联系人。
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
for (int i=0;i < nPeople;i++) {
NSMutableDictionary *dOfPerson=[NSMutableDictionary dictionary];
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
//For username and surname
ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);
CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(ref, kABPersonLastNameProperty);
[dOfPerson setObject:[NSString stringWithFormat:@"%@ %@", firstName, lastName] forKey:@"name"];
//For Email ids
ABMutableMultiValueRef eMail = ABRecordCopyValue(ref, kABPersonEmailProperty);
if(ABMultiValueGetCount(eMail) > 0) {
[dOfPerson setObject:(NSString *)ABMultiValueCopyValueAtIndex(eMail, 0) forKey:@"email"];
}
在你的帮助下,你会知道,联系人是否有电子邮件,如果有,那么你可以将该联系人参考添加到其他阵列:)希望它有所帮助:)
答案 1 :(得分:0)
ABAddressBook类允许您访问地址簿数据。您可以为这些创建自己的自定义对象。
kABPersonEmailProperty可让您获取ABPerson的电子邮件属性