Updated @joern answer on Swift 3:
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeContact as String) { itemProvider.loadItem(forTypeIdentifier: kUTTypeContact as String, options: nil, completionHandler: { (contact, error) in if let contactData = contact as? Data, let vCardString = String(data: contactData, encoding: .utf8) { print(vCardString) } }) }
Also to expand the action you need to add OperationQueue :
if itemProvider.hasItemConformingToTypeIdentifier(kUTTypeContact as String) { itemProvider.loadItem(forTypeIdentifier: kUTTypeContact as String, options: nil, completionHandler: { (contact, error) in OperationQueue.main.addOperation { if let contactData = contact as? Data, let vCardString = String(data: contactData, encoding: .utf8) { print(vCardString) } } }) }
source share