使用 iOS Action Extension 将 PDF 导入自己的应用程序

Import PDF into own App with iOS Action Extension

我正在寻找导入 PDF 的可能性,以便用它做一些进一步的任务,就像这个问题中描述的那样:

在互联网上四处寻找两天后,我发现操作扩展可能是解决方案,这就是我得到的结果:

   override func viewDidLoad() {
        super.viewDidLoad()

        let fileItem = self.extensionContext!.inputItems.first as! NSExtensionItem

        let textItemProvider = fileItem.attachments!.first as! NSItemProvider

        let identifier = kUTTypePDF as String

        if textItemProvider.hasItemConformingToTypeIdentifier(identifier) {

            textItemProvider.loadItemForTypeIdentifier(identifier, options: nil, completionHandler: handleCompletion)
        }
    }

    func handleCompletion(pdfFile: NSSecureCoding?, error: NSError!) {

        print("PDF loaded - What to do now?")
    }

完成处理程序被正确调用,所以我假设 PDF 已加载 - 但我现在不知道如何继续。如果动作扩展只处理图像或文本,它很容易被向下转换,但我知道处理文件的唯一方法是使用路径名——我没有也不知道如何获得。另外,我很确定沙盒也是派对的一部分。

我想我只需要朝正确的方向推动,Class 或协议可能适合我的需要 - 非常感谢任何建议。

对于其他寻找答案的人 - 我自己发现了,而且非常简单:

func handleCompletion(fileURL: NSSecureCoding?, error: NSError!) {

    if let fileURL = fileURL as? NSURL {

        let newFileURL = NSURL(fileURLWithPath: NSTemporaryDirectory().stringByAppendingString("test.pdf"))

        let fileManager = NSFileManager.defaultManager()

        do {
            try fileManager.copyItemAtURL(fileURL, toURL: newFileURL)
            // Do further stuff
        }
        catch {
            print(error)
        }
    }
}