HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何使用CNContactVCardSerialization dataWithContacts:方法获取联系人图像的VCF数据?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iPhone OS 9.3.2//EN
N:Contact;Test;;;
FN: Test  Contact 
END:VCARD

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

BEGIN:VCARD
VERSION:3.0
PRODID:-//Apple Inc.//iPhone OS 9.3.2//EN
N:Contact;Test;;;
FN: Test  Contact 
PHOTO;TYPE=JPEG;ENCODING=BASE64:<photo base64 String>
END:VCARD

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

大佬总结

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

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。