我是Swift的初学者。我在我的任务中做了一个文档拾取器。但是我看到文档中它被弃用为使用open var documentPickerMode: UIDocumentPickerMode { get }。而我的任务中的项目运行时使用了最低限度的IOS13部署。
open var documentPickerMode: UIDocumentPickerMode { get }
有没有一个解决方案可以在IOS14和更低版本上使用这个功能?或者这是正常的,用户需要更新IOS?原谅我的无知,因为我是新的斯威夫特世界。
yeotifhr1#
如果您查看文档:https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller......你会看到iOS 14中引入的四个初始化器的列表。每个初始化器都为一个特定类型的任务配置选取器。不需要“模式”,因为你不可能“不”知道你的选取器是如何配置的,因为“你”已经配置了它。这就是现代的架构。在同一页的底部,你会看到三个从iOS 13及之前版本开始的被弃用的初始化器,每个都以“mode”作为参数。如果你坚持支持iOS 13,那就是你必须使用的,即使它们在以后的系统中被弃用。这很好。“Deprecated”意味着不鼓励和取代;这并不意味着非法。你得到的只是一个警告,而不是(正如你的标题错误地说)一个错误。
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) } }
2条答案
按热度按时间yeotifhr1#
如果您查看文档:
https://developer.apple.com/documentation/uikit/uidocumentpickerviewcontroller
......你会看到iOS 14中引入的四个初始化器的列表。每个初始化器都为一个特定类型的任务配置选取器。不需要“模式”,因为你不可能“不”知道你的选取器是如何配置的,因为“你”已经配置了它。这就是现代的架构。
在同一页的底部,你会看到三个从iOS 13及之前版本开始的被弃用的初始化器,每个都以“mode”作为参数。如果你坚持支持iOS 13,那就是你必须使用的,即使它们在以后的系统中被弃用。这很好。“Deprecated”意味着不鼓励和取代;这并不意味着非法。你得到的只是一个警告,而不是(正如你的标题错误地说)一个错误。
im9ewurl2#
试试这个代码