我需要从地址簿中获取记录。我正在使用ABPeoplePickerNavigationController这样做。在获取记录时,我是否存在检查条件以检查记录。 例如,使用以下代码检查是否有名字
NSString *fname;
CFTypeRef fnameProperty = ABRecordCopyValue(person, kABPersonFirstNameProperty);
if (ABRecordCopyValue(person, kABPersonFirstNameProperty)) {
fname = (__bridge NSString*)fnameProperty;
}
else{
fname = @"";
}
该代码适用于kABPersonFirstNameProperty。
但是,当我使用以下代码检查电子邮件属性时
ABMultiValueRef emailProperty = ABRecordCopyValue(person, kABPersonEmailProperty);
NSLog(@"%@",emailProperty);
NSString *email;
if (ABRecordCopyValue(person, kABPersonEmailProperty)) {
email = (__bridge NSString*)ABMultiValueCopyValueAtIndex(emailProperty, 0);
}
else {
email = @"";
}
如果kABPersonEmailProperty为nil,则我的应用程序崩溃(没有为此人存储电子邮件属性)
有人可以解释我为什么会这样吗?
由于
答案 0 :(得分:4)
这是我的工作版本,看看是否有效。
//Email
NSString* email = nil;
ABMultiValueRef emailNum = ABRecordCopyValue(person,
kABPersonEmailProperty);
if (ABMultiValueGetCount(emailNum) > 0) {
email = (__bridge_transfer NSString*)
ABMultiValueCopyValueAtIndex(emailNum, 0);
} else {
email = @"";
}