How to create vCard from address book using ios sdk?

I do not know how to create a business card from the address book. I can generate NSString for vCard data by searching, but I don't know how to convert NSString to .vcf. Here is my code for NSString vCard data.

NSString *vcard = @"BEGIN:VCARD\nVERSION:3.0\n"; // Name vcard = [vcard stringByAppendingFormat:@"N:%@;%@;%@;%@;%@\n", (contact.lastname ? contact.lastname : @""), (contact.firstname ? contact.firstname : @""), (contact.middlename ? contact.middlename : @""), (contact.prefix ? contact.prefix : @""), (contact.suffix ? contact.suffix : @"") ]; vcard = [vcard stringByAppendingFormat:@"FN:%@\n",contact.compositeName]; if( contact.nickname ) vcard = [vcard stringByAppendingFormat:@"NICKNAME:%@\n",contact.nickname]; if( contact.firstnamephonetic ) vcard = [vcard stringByAppendingFormat:@"X-PHONETIC-FIRST-NAME:%@\n",contact.firstnamephonetic]; if( contact.lastnamephonetic ) vcard = [vcard stringByAppendingFormat:@"X-PHONETIC-LAST-NAME:%@\n",contact.lastnamephonetic]; // Work if( contact.organization || contact.department ) vcard = [vcard stringByAppendingFormat:@"ORG:%@;%@\n",(contact.organization?contact.organization:@""),(contact.department?contact.department:@"")]; if( contact.jobtitle ) vcard = [vcard stringByAppendingFormat:@"TITLE:%@\n",contact.jobtitle]; // Mail vcard = [vcard stringByAppendingString:[VCard toVcardField:@"email" items:contact.emailArray labels:contact.emailLabels]]; // Tel vcard = [vcard stringByAppendingString:[VCard toVcardField:@"phone" items:contact.phoneArray labels:contact.phoneLabels]]; // Adress vcard = [vcard stringByAppendingString:[VCard toVcardField:@"address" items:contact.addressArray labels:contact.addressLabels]]; // url vcard = [vcard stringByAppendingString:[VCard toVcardField:@"url" items:contact.urlArray labels:contact.urlLabels]]; // IM vcard = [vcard stringByAppendingString:[VCard toVcardField:@"im" items:contact.smsArray labels:contact.smsLabels]]; // birthday NSDate *birthday = contact.birthday; if (birthday) { NSString *bday = [NSString stringWithFormat:@"%@",birthday]; NSArray *bdayArr = [bday componentsSeparatedByString:@" "]; bday = [bdayArr objectAtIndex:0]; vcard = [vcard stringByAppendingFormat:@"BDAY;value=date:%@\n",bday]; } // Photo NSData *imageData = contact.thumbData;//contact.imageData; if (imageData) { //vcard = [vcard stringByAppendingFormat:@"PHOTO;BASE64:%@\n",[imageData base64Encoding]]; } // end vcard = [vcard stringByAppendingString:@"END:VCARD"]; 

and I get NSSTring as output:

 vCard : BEGIN:VCARD VERSION:3.0 N:def;Abc;;; FN:Abc def ORG:slk; EMAIL;type=INTERNET;type=HOME: fdf@gmail.com TEL;type=CELL:(258) 963-4889 TEL;type=IPHONE:(435) 768-6343 item1.ADR;type=HOME:;;aashram road;Ahmedabad;;;India item1.X-ABADR:in END:VCARD 

Can someone help me convert this NSString file to a .vcf file to get vCard?

+4
source share
1 answer
 NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents directory NSError *error; BOOL succeed = [yourNSString writeToFile:[documentsDirectory stringByAppendingPathComponent:@"contact.vcf"] atomically:YES encoding:NSUTF8StringEncoding error:&error]; if (!succeed){ // Handle error here NSLog(@"Error"); } 

This code will save the vcard file in the Documents folder of your application.

yourNSString is the variable you use when creating vcard

+5
source

Source: https://habr.com/ru/post/1444318/


All Articles