ios – 如何使用CNContactVCardSerialization dataWithContacts:方法获取联系人图像的VCF数据?

ios – 如何使用CNContactVCardSerialization dataWithContacts:方法获取联系人图像的VCF数据?,第1张

概述我正在使用CNContacts和CNContactUI框架并通过此选择联系人 CNContactPickerViewController *contactPicker = [CNContactPickerViewController new]; contactPicker.delegate = self; [self presentViewController:con 我正在使用CNContacts和CNContactUI框架并通过此选择联系人
CNContactPickerVIEwController *contactPicker = [CNContactPickerVIEwController new];              contactPicker.delegate = self; [self presentVIEwController:contactPicker animated:YES completion:nil];

-(voID)contactPicker:(CNContactPickerVIEwController *)picker dIDSelectContact:(CNContact *)contact{    NSArray *array = [[NSArray alloc] initWithObjects:contact,nil];    NSError *error;    NSData *data = [CNContactVCardSerialization dataWithContacts:array error:&error];    NSLog(@"ERROR_IF_ANY :: %@",error.description);}

此联系对象具有contact.imageData和日志.但当我试图通过交叉检查这些数据

NSArray *contactList = [NSArray arrayWithArray:[CNContactVCardSerialization contactsWithData:data error:nil]];CNContact *contactObject = [contactList objectAtIndex:0];

这是空的:

//contactObject.imageData

为什么我收到此null并且此联系人在签入联系人时有图像

解决方法 作为一种解决方法,您可以在VCard中创建PHOTO字段.
NSError* error = nil;NSData* vCardData = [CNContactVCardSerialization dataWithContacts:@[contact] error:&error];Nsstring* vcString = [[Nsstring alloc] initWithData:vCardData enCoding:NSUTF8StringEnCoding];Nsstring* base64Image = contact.imageData.base64EnCoding;Nsstring* vcardImageString = [[@"PHOTO;TYPE=JPEG;ENCoding=BASE64:" stringByAppendingString:base64Image] stringByAppendingString:@"\n"];vcString = [vcString stringByReplacingOccurrencesOfString:@"END:VCARD" withString:[vcardImageString stringByAppendingString:@"END:VCARD"]];vCardData = [vcString dataUsingEnCoding:NSUTF8StringEnCoding];

由于某些原因,CNContactVCardSerialization不使用任何联系人照片.序列化后的VCard看起来像:

BEGIN:VCARDVERSION:3.0PRODID:-//Apple Inc.//iPhone OS 9.3.2//ENN:Contact;Test;;;FN: Test  Contact END:VCARD

在VCard中插入PHOTO字段后,您将获得

BEGIN:VCARDVERSION:3.0PRODID:-//Apple Inc.//iPhone OS 9.3.2//ENN:Contact;Test;;;FN: Test  Contact PHOTO;TYPE=JPEG;ENCoding=BASE64:<photo base64 string>END:VCARD

在此插入之后,联系人在CNContactVIEwController中看起来很好

总结

以上是内存溢出为你收集整理的ios – 如何使用CNContactVCardSerialization dataWithContacts:方法获取联系人图像的VCF数据?全部内容,希望文章能够帮你解决ios – 如何使用CNContactVCardSerialization dataWithContacts:方法获取联系人图像的VCF数据?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1101047.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存