生成电子名片没有图像

问题描述:

我目前通过此功能,生成从我的地址簿中的电子名片:生成电子名片没有图像

ABAddressBookRef ab = ABAddressBookCreateWithOptions(NULL, nil); 

NSString *firstName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonFirstNameProperty); 
NSString *lastName = (__bridge NSString *)ABRecordCopyValue(person, kABPersonLastNameProperty); 

if (!lastName) lastName = @""; 
if (!firstName) firstName = @""; 

NSString *name = [NSString stringWithFormat:@"%@ %@",firstName, lastName]; 

CFArrayRef contact = ABAddressBookCopyPeopleWithName(ab, (__bridge CFStringRef)(name));  

CFDataRef vcard = (CFDataRef)ABPersonCreateVCardRepresentationWithPeople(contact); 

这工作得很好,但我不希望在我的名片任何图像。有没有办法在没有获取图像的情况下生成电子名片?

我创建了一种解决方法从字符串作为如此简单地移除照片部分:

- (NSString *)removeImageFromVCF:(NSString *)yourString { 

NSScanner *theScanner; 
NSString *text = nil; 

theScanner = [NSScanner scannerWithString:yourString]; 

if ([yourString rangeOfString:@"X-SOCIALPROFILE"].location == NSNotFound) { 

    while ([theScanner isAtEnd] == NO) { 

     [theScanner scanUpToString:@"PHOTO" intoString:NULL] ; 
     [theScanner scanUpToString:@"END:VCARD" intoString:&text] ; 

     yourString = [yourString stringByReplacingOccurrencesOfString: 
         [NSString stringWithFormat:@"%@", text] withString:@""]; 
    } 

}else{ 

    while ([theScanner isAtEnd] == NO) { 

     [theScanner scanUpToString:@"PHOTO" intoString:NULL] ; 
     [theScanner scanUpToString:@"X-SOCIALPROFILE" intoString:&text] ; 

     [theScanner scanUpToString:@"END:VCARD" intoString:NULL]; 

     yourString = [yourString stringByReplacingOccurrencesOfString: 
         [NSString stringWithFormat:@"%@", text] withString:@""]; 


    } 

} 

return yourString; 

} 

希望这将帮助别人。

+0

您如何确定照片后面的下一个参数只能是X-SOCIALPROFILE?你有什么确认吗? – 2015-07-05 16:58:09