swift IOS.14下的UIDocumentPicker函数

jutyujz0  于 2022-11-28  发布在  Swift
关注(0)|答案(2)|浏览(277)

我是Swift的初学者。我在我的任务中做了一个文档拾取器。但是我看到文档中它被弃用为使用open var documentPickerMode: UIDocumentPickerMode { get }。而我的任务中的项目运行时使用了最低限度的IOS13部署。

有没有一个解决方案可以在IOS14和更低版本上使用这个功能?或者这是正常的,用户需要更新IOS?原谅我的无知,因为我是新的斯威夫特世界。

yeotifhr

yeotifhr1#

如果您查看文档:
https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller
......你会看到iOS 14中引入的四个初始化器的列表。每个初始化器都为一个特定类型的任务配置选取器。不需要“模式”,因为你不可能“不”知道你的选取器是如何配置的,因为“你”已经配置了它。这就是现代的架构。
在同一页的底部,你会看到三个从iOS 13及之前版本开始的被弃用的初始化器,每个都以“mode”作为参数。如果你坚持支持iOS 13,那就是你必须使用的,即使它们在以后的系统中被弃用。这很好。“Deprecated”意味着不鼓励和取代;这并不意味着非法。你得到的只是一个警告,而不是(正如你的标题错误地说)一个错误。

im9ewurl

im9ewurl2#

试试这个代码

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    guard url.startAccessingSecurityScopedResource() else {
        return
    }
    defer { url.stopAccessingSecurityScopedResource() }
    var error: NSError? = nil
    NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { (url) in
        let _ : [URLResourceKey] = [.nameKey, .isDirectoryKey]
        let documentFileData = NSData(contentsOf: (url)) as Data?
        pickImageCallback?(nil, url.lastPathComponent, documentFileData)
    }
}

相关问题