0
我导入联系人信息到一些文本框,但应用程序崩溃,如果有某些方面的任何条目,如电话,电子邮件等导入地址簿联系信息,如何处理空字段?
这里是我的文本框:
First Name
Middle Name
Last Name
Main Phone
Mobile Phone
Email Address
Website
假设所选联系人不会有第二个电话号码(在这种情况下为手机),或者没有该联系人的URL条目。该应用程序崩溃。
*ABMutableMultiValueRef phoneMulti = ABRecordCopyValue(person, kABPersonPhoneProperty);
NSMutableArray *phones = [[NSMutableArray alloc] init];
int i;
for (i = 0; i < ABMultiValueGetCount(phoneMulti); i++) {
NSString *aPhone = [(NSString*)ABMultiValueCopyValueAtIndex(phoneMulti, i) autorelease];
[phones addObject:aPhone];
}
accountPhone1TextField.text = [phones objectAtIndex:0];
accountPhone2TextField.text = [phones objectAtIndex:1];
CFRelease(phoneMulti);
[phones release];*
或者,如果我试图从该联系人的电子邮件地址,它不存在,这将崩溃:
NSString *anEmail = [(NSString*)ABMultiValueCopyValueAtIndex(emailMulti, i) autorelease];
//Variable is not a CFString
***** UPDATE *****
结束了使用下面的代码:
ABMutableMultiValueRef emailMulti = ABRecordCopyValue(person, kABPersonEmailProperty);
NSMutableDictionary *myEmailDict = [NSMutableDictionary dictionaryWithCapacity:ABMultiValueGetCount(emailMulti)];
for (CFIndex i = 0; i < ABMultiValueGetCount(emailMulti); i++) {
emailLabel = ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(emailMulti, i));
email = ABMultiValueCopyValueAtIndex(emailMulti, i);
[myEmailDict setObject:(NSString*)email forKey:(NSString*)emailLabel];
CFRelease(email);
CFRelease(emailLabel);
}
我试过了..但是NSString * anEmail = [(NSString *)ABMultiValueCopyValueAtIndex(emailMulti,i)autorelease];崩溃,因为没有电子邮件地址 – WrightsCS 2010-09-10 08:55:55
你使用kABPersonEmailProperty? – LarsJK 2010-09-10 09:54:25
是的,但由于某些原因,如果没有电子邮件字段的记录...它会导致崩溃。 – WrightsCS 2010-09-10 22:34:08