我正在使用TextField用户输入电话号码。当TextField发生更改时,应检查该号码是否已存在于电话簿中并显示名称。
到目前为止,我唯一的方法是解析Dict中的所有名称和数字并从那里阅读。
有没有更简单,更有效和更复杂的方法呢?
答案 0 :(得分:0)
翻阅用户的地址簿并为人员映射创建电话号码并不难。 Address Book Programming Guide列出了有关框架如何工作的所有信息。
答案 1 :(得分:0)
关闭并完成此问题,这是我的解决方案的主要部分:
ABAddressBookRef m_addressbook = ABAddressBookCreate();
if (!m_addressbook) {
NSLog(@"opening address book");
}
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(m_addressbook);
CFIndex nPeople = ABAddressBookGetPersonCount(m_addressbook);
[.....]
adressList = [[NSMutableDictionary alloc] init];
for (int i=0;i < nPeople;i++) {
ABRecordRef ref = CFArrayGetValueAtIndex(allPeople,i);
vorname = ABRecordCopyValue(ref, kABPersonFirstNameProperty);
nachname = ABRecordCopyValue(ref, kABPersonLastNameProperty);
nameTag = [NSString stringWithFormat:@"%@ %@.", vorname, nachname];
ABMultiValueRef phones =(NSString*)ABRecordCopyValue(ref, kABPersonPhoneProperty);
// Loop thru all numbers of a person
for(CFIndex i = 0; i < ABMultiValueGetCount(phones); i++) {
tmpNumber = (NSString*)ABMultiValueCopyValueAtIndex(phones, i);
tmpNumber = [self cleanupPhoneNumber:tmpNumber];
[adressList setObject: nameTag forKey:tmpNumber];
NSLog(@"Name: %@ | Phone: %@", nameTag, tmpNumber);
}
}