2013-02-25 49 views
1

我目前通過此功能,生成從我的地址簿中的電子名片:生成電子名片沒有圖像

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); 

這工作得很好,但我不希望在我的名片任何圖像。有沒有辦法在沒有獲取圖像的情況下生成電子名片?

回答

0

我創建了一種解決方法從字符串作爲如此簡單地移除照片部分:

- (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