rks*_*rst 2 iphone cocoa-touch objective-c
我正在向用户显示地址簿视图,让他们点击联系人并选择一个电话号码.如果他们选择了电话号码,我想将电话号码作为整数,将联系人的姓名作为NSString.
我尝试使用以下代码:
//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);
Run Code Online (Sandbox Code Playgroud)
此代码在此方法中:
- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
Run Code Online (Sandbox Code Playgroud)
我正在检查用户是否使用以下代码选择了一个电话号码:
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...
Run Code Online (Sandbox Code Playgroud)
我能够使用printf在控制台中显示电话号码,但是我无法弄清楚如何将其转换为整数以及如何获取联系人姓名,即使所选属性不是人名.
而且,我正在做的事似乎非常低效.有没有更好的方法来做到这一点?
编辑:如果我不能将它们存储为int,则字符串就可以了.我只是无法弄清楚如何从该数组转到实际的字符串.如果我将其转换或将其保存为UTF8String,我总会得到一些错误.
Jas*_*oco 14
为了有效地获取属性(就读取而言),您可以在回调方法中执行以下操作:
switch( propertyType ) {
case kABMultiStringPropertyType:
// this is the phone number, do something
break;
default:
[self wrongSelection];
break;
}
Run Code Online (Sandbox Code Playgroud)
不过,我不确定你是否真的需要解析它.要从您可以执行的记录中获取电话号码(再次,在您的回调方法中):
ABMultiValueRef phoneNumberProperty = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSArray* phoneNumbers = (NSArray*)ABMultiValueCopyArrayOfAllValues(phoneNumberProperty);
CFRelease(phoneNUmberProperty);
// Do whatever you want with the phone numbers
NSLog(@"Phone numbers = %@", phoneNumbers);
[phoneNumbers release];
Run Code Online (Sandbox Code Playgroud)
您无法将电话号码转换为整数.电话号码是字符串.Apple包含的默认条目为"1-800-MYAPPLE".
此外,即使电话号码的所有组成部分都是数字,也无法保证世界各地的电话号码实际上足够小,以适应64位值,一旦您考虑到区号,国家代码,内部扩展等等.用户可以自由地在那里放置.
| 归档时间: |
|
| 查看次数: |
21892 次 |
| 最近记录: |