Я показываю пользователю адресную книгу и позволяю ему щелкнуть контакт и выбрать номер телефона. Если они выбирают номер телефона, я хочу получить номер телефона в виде целого числа и имя контакта в виде строки NSS.
Я пытался сделать это с помощью следующего кода:
//printf("%s\n",[[(NSArray *)ABMultiValueCopyArrayOfAllValues(theProperty) objectAtIndex:identifier] UTF8String]);
//CFArrayRef *arrayString = [[(NSArray *)ABMultiValueCopyArrayOfAllValues(theProperty) objectAtIndex:identifier] UTF8String];
NSArray *arrayString = [(NSArray *)ABMultiValueCopyArrayOfAllValues(theProperty) objectAtIndex:identifier];
printf("%s\n", arrayString);
Этот код внутри этого метода:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
И я проверяю, выбрал ли пользователь номер телефона с этим кодом:
if (propertyType == kABStringPropertyType)
{
[self wrongSelection];
}
else if (propertyType == kABIntegerPropertyType)
{
[self wrongSelection];
}
else if (propertyType == kABRealPropertyType)
{
[self wrongSelection];
}
else if (propertyType == kABMultiStringPropertyType)
{
//This is the phone number...
Я могу заставить номер телефона отображаться в консоли с помощью printf, однако я не могу понять, как преобразовать его в целое число и как также получить имя контакта, даже если выбранное свойство не принадлежит человеку название.
Кроме того, то, что я делаю, кажется очень неэффективным. Есть ли лучшие способы сделать это?
Редактировать: Если я не могу сохранить их как int, строка будет в порядке. Я просто не могу понять, как перейти от этого массива к реальной строке. Если я приведу его или сохраню как UTF8String, я всегда получаю сообщение об ошибке.