我正在构建一个同步来自在线来源的联系人的应用。到目前为止一切正常......当手机有一本地址簿时:
ABAddressBookRef addressBook = ABAddressBookCreate();
ABRecordRef group1 = ABGroupCreate();
ABRecordSetValue(group1,kABGroupNameProperty,@"Group1",nil);
ABAddressBookAddRecord(addressBook,group1,nil);
ABAddressBookSave(addressBook,nil);
ABRecordRef person = ABPersonCreate();
// Edit person values...
ABGroupAddMember(group1,person,nil);
ABAddressBookAddRecord(addressBook,person,nil);
ABAddressBookSave(addressBook,nil);
CFRelease(person);
CFRelease(addressBook);
问题出现了,但是当手机已经有多个地址簿时。我正在测试一部手机,其中包含一个适用于所有联系人的地址簿,一个适用于Gmail等。当我以上述方式添加联系人时,它会将其添加到Gmail地址簿中,并在此过程中删除“Group1”标识符来自联系。有没有办法可以将ABAddressBookRef更改为指向手机中的特定地址簿?
答案 0 :(得分:0)
根据reference,ABAddressBookCreate
始终返回从系统的地址簿数据库填充的地址簿对象。这意味着只有一个地址簿,即使您有多个ABAddressBook
实例用于与之交互。
答案 1 :(得分:0)
虽然我相信Alex是正确的,只有一本地址簿,但该地址簿可能包含多个来源(ABSource)。而且,在iOS 4+中,可以专门识别和操纵特定来源。