更改地址簿/通讯录中的所有号码

时间:2011-10-14 08:46:47

标签: iphone objective-c ios abaddressbook

我正在尝试对我的地址簿中的所有数字进行统一更改,我想将我的国家/地区代码(+46)添加到以0开头的所有数字,并认为我会为此制作应用。问题是如何以最好的方式做到这一点,看起来很难 - 很难。

通常的方式似乎是通过一个人选择器:http://developer.apple.com/library/ios/#documentation/ContactData/Conceptual/AddressBookProgrammingGuideforiPhone/Chapters/UI_Controllers.html#//apple_ref/doc/uid/TP40007744-CH5-SW4 - 但这意味着用户必须选择它想要更改的联系人,这必须是一种过于复杂的方式。

有没有办法遍历地址簿中的所有数字,更改它们,然后将它们放回去?

提前感谢Tobias Tovedal。

1 个答案:

答案 0 :(得分:6)

是的,您可以遍历所有记录,并可以编辑地址簿中的记录。以下是从地址簿获取所有记录的示例:

     NSArray *array= (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);

以下是根据人的记录ID从地址簿编辑特定记录的代码:

     ABAddressBookRef ab = ABAddressBookCreate();
     ABRecordID id = ABRecordGetRecordID(person);
     ABRecordRef newPerson = ABAddressBookGetPersonWithRecordID(ab, id);
     if(newPerson != NULL){
    if(![firstName.text isEqual:firstname]){
    ABRecordRemoveValue(newPerson, kABPersonFirstNameProperty,nil);
    ABRecordSetValue(newPerson, kABPersonFirstNameProperty,      firstName.text,nil);
}
}
ABAddressBookSave(ab,nil);

您可以获取数组中的记录,然后更改电话号码的值或逐个遍历记录。你需要注意一个人的电话号码,因为一个人可以有多个电话号码所以,你需要使用ABMultiValueRef获取电话号码,这将给出一个人的所有电话号码。