примечание и данные изображений в CNMutableContact и iOS 13

#ios #swift

#iOS #быстрый

Вопрос:

Я пытаюсь заполнить информацию CNMutableContact, чтобы сохранить ее и поделиться ею, и все работает отлично, кроме заметки (которая должна быть обычной строкой) и данных изображений.

Это то, что я пытаюсь сделать:

 let contact = CNMutableContact() contact.note = "HELLO"  if let imageUrl = self.getImgLogo(), let url = URL(string: imageUrl) {  contact.imageData = try? Data(contentsOf: url) }  

Я ввел в контакт больше вещей, таких как имя, фамилия, должность, социальные профили, номера телефонов, электронные письма … и все работает нормально, кроме этих двух вещей.

Кто — нибудь может сказать мне, не делаю ли я что-то не так?

Спасибо!

Ответ №1:

Я устранил проблему. Проблема была связана с сериализацией CNContactVCardSerialization, которая игнорировала примечание и данные изображения. Поэтому я сделал расширение для решения этой проблемы:

 import Contacts  extension CNContactVCardSerialization {      class func dataWithExtraInformation(contacts: [CNContact]) throws -gt; Data {  var text: String = ""  for contact in contacts {  let data = try CNContactVCardSerialization.data(with: [contact])  var str = String(data: data, encoding: .utf8)!    if let imageData = contact.imageData {  let base64 = imageData.base64EncodedString()  str = str.replacingOccurrences(of: "END:VCARD", with: "PHOTO;ENCODING=b;TYPE=JPEG:(base64)nEND:VCARD")  }    if !contact.note.isEmpty {  str = str.replacingOccurrences(of: "END:VCARD", with: "NOTE:(contact.note)nEND:VCARD")  }    text = text.appending(str)  }  return text.data(using: .utf8)!  } }  

Он просто получает сериализованную карту и добавляет дополнительную информацию, которая мне нужна 😉

Спасибо!