我想使用“联系人”应用的外观/功能在我的应用中显示公司员工列表。这些员工不应该被放入电话用户的地址簿中,而应该是独立的应用程序特定列表。
似乎ABPeoplePickerNavigationController是可行的方法,我可以将.addressBook属性设置为我使用ABAddressBookCreate()创建的地址簿,但是当我在手机上运行它时,它会加载我的所有联系人,而不仅仅是一个我在我的应用程序中创建了一个测试。我创建的员工也会保存到手机的中央地址簿中。
有没有办法创建一个没有与中央地址簿集成的独立地址簿,以便我可以使用ABPeoplePickerNavigationController?当你查看朋友列表时,Facebook似乎在他们的应用程序中做了类似的事情。
我希望我不必从头开始构建这个。有几个类似的问题,但没有确定的。
ABAddressBookRef addressBook;
CFErrorRef error = NULL;
addressBook = ABAddressBookCreate();
ABRecordRef aRecord = ABPersonCreate();
CFErrorRef anError = NULL;
bool didSet;
didSet = ABRecordSetValue(aRecord, kABPersonFirstNameProperty, CFSTR("Andy"), &anError);
if (!didSet) {/* Handle error here. */}
didSet = ABRecordSetValue(aRecord, kABPersonLastNameProperty, CFSTR("Aardvark"), &anError);
if (!didSet) {/* Handle error here. */}
CFStringRef firstName, lastName;
firstName = ABRecordCopyValue(aRecord, kABPersonFirstNameProperty);
lastName = ABRecordCopyValue(aRecord, kABPersonLastNameProperty);
/* ... Do something with firstName and lastName. ... */
ABAddressBookAddRecord(addressBook, aRecord, &error);
CFRelease(aRecord);
CFRelease(firstName);
CFRelease(lastName);
ABAddressBookSave(addressBook, &error);
ABPeoplePickerNavigationController *picker =
[[ABPeoplePickerNavigationController alloc] init];
picker.addressBook = addressBook;
picker.peoplePickerDelegate = self;
[self presentModalViewController:picker animated:YES];
CFRelease(addressBook);