gpt4 book ai didi

ios - 从 peoplePickerNavigationController 获取电话号码

转载 作者:行者123 更新时间:2023-11-29 11:24:13 25 4
gpt4 key购买 nike

概述:当人们使用 peoplePicker 并点击姓名时,我试图获取电话号码和全名。然后,我想在文本字段上显示全名并将电话号码保存为字符串。使用 ph num 和名称,我打算将其用作唯一标识。我不想使用 ABRecord 的唯一 ID,因为有时我的联系人有重复项,尤其是当我将它与谷歌等同步时...

如果我没理解错的话,我需要使用这个委托(delegate)方法

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
shouldContinueAfterSelectingPerson:(ABRecordRef)person

使用上面的方法,我可以获得在文本字段上显示为 scuh 的全名

textField.text = ABRecordCopyCompositeName(person);

但是,我不知道如何获取 ph 值。要获取 ph 值,我必须使用其他委托(delegate)方法:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker 
shouldContinueAfterSelectingPerson:(ABRecordRef)person
property:(ABPropertyID)property
identifier:(ABMultiValueIdentifier)identifier

ABMultiValueRef phoneProperty = ABRecordCopyValue(person,property);
NSString *phone = (NSString *)ABMultiValueCopyValueAtIndex(phoneProperty,identifier);

但是,我不喜欢这样,因为当用户单击地址簿上的姓名时,它会显示带有 ph 号、电子邮件等的详细信息,并且用户必须单击 ph 号。我想要的是从第一个屏幕开始,用户点击名称,名称显示为文本字段,ph 值作为字符串保存在某处。

最佳答案

我使用一种方法将所有有电子邮件的人保存在一个数组中,然后在 TableView 中显示该数组:

ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef allPeople = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFIndex nPeople = ABAddressBookGetPersonCount(addressBook);


NSMutableArray *mArr = [[NSMutableArray alloc]init];

for( int i = 0 ; i < nPeople ; i++ )
{
ABRecordRef person = CFArrayGetValueAtIndex(allPeople, i);
NSString *preName = (NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty);
NSString *postName = (NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty);
ABMultiValueRef emails = (ABMultiValueRef) ABRecordCopyValue(person, kABPersonEmailProperty);
int ecount = ABMultiValueGetCount(emails);

for (int i = 0; i < ecount; i++) {
NSMutableDictionary *dd = [[NSMutableDictionary alloc]init];

[dd setValue:[NSString stringWithFormat:@"%@ %@", preName, postName] forKey:@"name"];

NSString *emailID = (NSString *)ABMultiValueCopyValueAtIndex(emails, i);
[dd setValue:emailID forKey:@"mail"];
//NSLog(@"inside loop %@ %@ %@", preName, postName, emailID);
[emailID release];


[mArr addObject:dd];
[dd release];
}
}

emailArray = [[NSArray alloc]initWithArray:mArr];
[mArr release];

关于ios - 从 peoplePickerNavigationController 获取电话号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479052/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com