📜  如何以编程方式从 ios swift 中的文件管理器中获取所选 PDF 文档的路径 - Swift (1)

📅  最后修改于: 2023-12-03 15:23:48.764000             🧑  作者: Mango

如何以编程方式从 iOS Swift 中的文件管理器中获取所选 PDF 文档的路径 - Swift

在 iOS 的应用中,有时需要让用户选择某个 PDF 文件并进行操作。本文介绍如何使用 Swift 编程语言从 iOS 文件管理器中获取所选 PDF 文档的路径。

首先,在你的项目中创建一个名为 FilePicker.swift 的文件,并在其中添加以下代码:

import UIKit
import MobileCoreServices

class FilePicker: NSObject, UIDocumentPickerDelegate {
    var viewController: UIViewController?
    var completion: ((URL?) -> Void)?
    
    func pickDocument(_ viewController: UIViewController, completion: @escaping (URL?) -> Void) {
        self.viewController = viewController
        self.completion = completion
        
        let types = [String(kUTTypePDF)]
        let documentPicker = UIDocumentPickerViewController(documentTypes: types, in: .import)
        documentPicker.delegate = self
        documentPicker.modalPresentationStyle = .formSheet
        viewController.present(documentPicker, animated: true, completion: nil)
    }
    
    func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
        guard let url = urls.first else { return }
        self.completion?(url)
    }
    
    func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) {
        self.completion?(nil)
    }
}

代码中,我们创建了一个名为 FilePicker 的类。该类实现 UIDocumentPickerDelegate 协议,用于处理从文件管理器中选择的文档。

pickDocument 方法中,我们创建一个 UIDocumentPickerViewController,用于打开文件管理器并让用户选择文档。在打开文件管理器时,我们仅显示 PDF 文档,以限制用户的选择范围。

documentPicker 方法中,我们获取用户选择的第一个文档,并将其路径传递给回调函数 completion 中。如果用户取消了选择文档操作,则调用 completion 并将其设为 nil

现在,我们可以在我们应用的任何地方使用 FilePicker,如下所示:

let filePicker = FilePicker()
filePicker.pickDocument(self) { url in
    guard let fileURL = url else { return }
    print(fileURL.path)
    // TODO: 对所选的 PDF 文件进行操作
}

在上面的代码中,我们创建了 FilePicker 的实例,并在其中调用 pickDocument 方法。当用户选择完 PDF 文件后,我们获取所选文档的路径,并使用 print 函数将其打印出来。

此时,我们便可以在所选择的 PDF 文件上进行任何操作了。

参考链接: