2012-11-06 32 views
4

我不知道如何從地址簿創建vCard。我可以通過搜索爲vCard數據生成NSString,但我不知道如何將NSString轉換爲.vcf。這是我的vCard數據的NSString的代碼。如何使用ios sdk從地址簿創建vCard?

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"]; 

,我得到的NSString作爲輸出:

vCard : BEGIN:VCARD 
VERSION:3.0 
N:def;Abc;;; 
FN:Abc def 
ORG:slk; 
EMAIL;type=INTERNET;type=HOME:[email protected] 
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 

任何人可以幫助我這個的NSString .VCF文件來獲得電子名片轉換?

+1

http://stackoverflow.com/questions/2795615/generate-vcard-from-addressbook-framework – Hanuman

+0

您好,感謝您提出的問題,因爲我的工作在同樣的事情,但你能幫我我怎樣才能將這個.vcf導出到特定的電子郵件,我如何將這個.vcf文件附加到電子郵件感謝提前 –

+0

你可以告訴我什麼'[VCard toVcardField:@「email」項目:contact.emailArray標籤:contact.emailLabels]'這是任何默認方法? – Surfer

回答

5
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"); 
} 

此代碼將vcard保存在應用程序的Documents目錄中。

yourNSString是你使用的變量時,你產生的電子名片

+1

謝謝,我的問題解決了。 :) – user7388

+0

你能否請你建議我abt我上面的評論。或請提供完整的詳細信息,以創建vcard – Surfer

+0

我使用這種方法,但我得到MIME /內容類型=「文本/目錄」我需要「文本/ x-vcard」。 Plzz幫助 –