Apple предоставляет следующий пример кода в своем проекте QuickContacts для поиска в адресной книге для конкретного пользователя.
-(void)showPersonViewController
{
// Fetch the address book
ABAddressBookRef addressBook = ABAddressBookCreate();
// Search for the person named "Appleseed" in the address book
CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, CFSTR("Appleseed"));
// Display "Appleseed" information if found in the address book
if ((people != nil) && (CFArrayGetCount(people) > 0))
{
ABRecordRef person = CFArrayGetValueAtIndex(people, 0);
ABPersonViewController *picker = [[[ABPersonViewController alloc] init] autorelease];
picker.personViewDelegate = self;
picker.displayedPerson = person;
// Allow users to edit the person’s information
picker.allowsEditing = YES;
[self.navigationController pushViewController:picker animated:YES];
}
else
{
// Show an alert if "Appleseed" is not in Contacts
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
message:@"Could not find Appleseed in the Contacts application"
delegate:nil
cancelButtonTitle:@"Cancel"
otherButtonTitles:nil];
[alert show];
[alert release];
}
CFRelease(addressBook);
CFRelease(people);
}
Строка, с которой у меня возникают проблемы:
// Search for the person named "Appleseed" in the address book
CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, CFSTR("Appleseed"));
Это будет искать в адресной книге человека по имени «Appleseed», но я хочу искать в адресной книге по пользователю, который хранится в переменной. Например, я пытаюсь:
Customer *customer = [customerArray objectAtIndex:indexPath.row];
cell.textLabel.text = customer.name;
CFArrayRef people = ABAddressBookCopyPeopleWithName(addressBook, CFSTR(customer.name));
«customer.name» не разрешается до сохраненного значения. Я использовал NSLog для вывода значения customer.name, и оно содержит ожидаемое значение.
Как я могу преобразовать эту переменную в строку, чтобы она правильно искала адресную книгу?
Спасибо!