2016-07-25 71 views
1

我想使用方法CNContactVCardSerialization.dataWithContacts()将CNContact数组转换为vCard。但它给了我以下错误。CNContactVCardSerialization.dataWithContacts给出异常

2016-07-25 14:05:00.115 AddressBook-ios9[902:28918] Exception writing contacts to vCard (data): A property was not requested when contact was fetched.

我确信,我传递CNContacts的有效的数组,但它毕竟是给这个例外。任何人都可以引导我做我做错了什么?

我附上了下面的源代码。

func getVcardFromSearchingName(name: String) -> NSData? { 
    do {    
     if let contacts = searchMultiContacts(name) { 
      print(contacts) 
      let vCard = try CNContactVCardSerialization.dataWithContacts(contacts) 
      return vCard 
     } else { 
      return nil 
     } 
    } catch { 
     return nil 
    } 
} 

回答

2

我发现了我的错误。在提取联系人的键上,我缺少CNContactVCardSerialization.descriptorForRequiredKeys()。添加完成后,代码完美无缺。

+0

#haider_kazal:你能告诉我怎么用 CNContactVCardSerialization.descriptorForRequiredKeys() 以上 –

+0

@AbhishekThapliThapliyal ......正如我所说,'unifiedContactsMatchingPredicate()'方法需要'keysToFetch';在'keysToFetch'中包含'CNContactVCardSerialization.descriptorForRequiredKeys()'以获得必要的数据来创建VCard –