Я пытаюсь открыть файл .pkPass из кошелька с помощью общего ресурса, но он не открывается. В основном это возвращаемые данные, и я хочу URL. но если я пытаюсь открыть данные .pkpassfile в PKAddPassesViewController, он не открывается, он говорит, что Попытка представить, чье представление не находится в иерархии окон!.
ShareViewController
override func didSelectPost() { if let item = self.extensionContext?.inputItems[0] as? NSExtensionItem{
print("Item \(item)")
for ele in item.attachments!{
print("item.attachments!======>>> \(ele as! NSItemProvider)")
let itemProvider = ele as! NSItemProvider
print(itemProvider)
if itemProvider.hasItemConformingToTypeIdentifier("com.apple.pkpass"){
imageType = "com.apple.pkpass"
}
if itemProvider.hasItemConformingToTypeIdentifier("com.apple.pkpass"){
imageType = "com.apple.pkpass"
}
print("imageType : \(imageType)")
if itemProvider.hasItemConformingToTypeIdentifier(imageType){
print("True")
itemProvider.loadItem(forTypeIdentifier: imageType, options: nil, completionHandler: { (item, error) in
print(item)
var imgData: Data!
if let url = item as? Data{
imgData = url
//try! Data(contentsOf: url)
self.openPass(withName: url)
}else {
print("sorry it does not work on others")
}
})
}
}
}self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}
открыть файл PkPass Функции
func openPass(withName passData: Data?) {
var error: Error? = nil
var newPass: PKPass? = nil
do {
newPass = try PKPass(data: passData as! Data)
} catch {
}
if error != nil {
UIAlertView(title: "Passes error", message: error!.localizedDescription, delegate: nil, cancelButtonTitle: "Ooops", otherButtonTitles: "").show()
return
}
let addController = PKAddPassesViewController(pass: newPass!)
addController!.delegate = self
present(addController!, animated: true)
}
говорит, что он не открывается. Попытка представить, чье представление не находится в иерархии окон!
В основном я хочу открыть файл .pkpass из приложения кошелька, используя расширение общего доступа в моем приложении. и затем пользователь может распечатать или поделиться паролем, используя мое приложение. Я хочу получить URL-адрес файла .pkpass, а затем сохранить его в userdefults, теперь проблема заключается в том, что этот файл .pkpass возвращает данные вместо URL, поэтому любой может помочь решить проблему или дать предложение относительно открытия файла .pkpass из приложения-кошелька с помощью общего ресурса. расширение спасибо