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

Tob*_*dal 0 iphone objective-c abaddressbook ios

我正在尝试对我的地址簿中的所有数字进行统一更改,我想将我的国家代码(+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.

Min*_*shi 6

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

     NSArray *array= (NSArray *)ABAddressBookCopyArrayOfAllPeople(addressBook);
Run Code Online (Sandbox Code Playgroud)

以下是根据人的记录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);
Run Code Online (Sandbox Code Playgroud)

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