2

我想使用联系人应用程序的外观/功能在我的应用程序中显示公司员工列表。这些员工不应该被放入电话用户的通讯录中,而应该是一个独立的应用程序特定列表。

似乎 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);
4

0 回答 0