首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >撞向ABRecordCopyValue

撞向ABRecordCopyValue
EN

Stack Overflow用户
提问于 2011-09-30 11:59:52
回答 1查看 694关注 0票数 0

方法如下:

代码语言:javascript
复制
-(id)getValueForProperty:(NSUInteger) propertyId{
   if(personRec != NULL)
        return (id)ABRecordCopyValue(personRec, (ABPropertyID)propertyId);   
   }
}

我按以下方式调用上述方法:

代码语言:javascript
复制
NSString *lastName = (NSString *)[self getValueForProperty:kABPersonLastNamePhoneticProperty];
//or
NSString *lastName = (NSString *)[self getValueForProperty:kABPersonLastNameProperty];

NSString *firstName = (NSString *)[self getValueForProperty:kABPersonFirstNamePhoneticProperty];
//or
NSString *firstName = (NSString *)[self getValueForProperty:kABPersonFirstNameProperty];

NSString *orgName = (NSString *)[self getValueForProperty:kABPersonOrganizationProperty];

但是当我在设备中运行应用程序时,它显示出它正在崩溃

代码语言:javascript
复制
return (id)ABRecordCopyValue(personRec, (ABPropertyID)propertyId);   

在什么情况下这会崩溃?

EN

回答 1

Stack Overflow用户

发布于 2013-08-18 19:15:13

在调用ABMultiValueRef时,可能会为您的propertyId之一返回一个ABRecordCopyValue,但是您尝试将其填充到NSString中。

在这种情况下,您应该做什么(假设您正在尝试获取第一个电子邮件地址,并且正在使用ARC):

代码语言:javascript
复制
ABMultiValueRef emails = ABRecordCopyValue(person, kABPersonEmailProperty);
int no = ABMultiValueGetCount(emails);
if ( no > 0 )
{
    CFStringRef emailRef = ABMultiValueCopyValueAtIndex(emails, 0);
    NSString* email = CFBridgingRelease(emailRef);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7610022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档