什么时候可以删除convertToUIApplicationOpenExternalURLOptionsKeyDictionary辅助函数?

Gle*_*enn 5 ios swift

去年我迁移到Swift 4.2时,Swift 4.2迁移器在我的某些控制器中添加了一个辅助函数:

// Helper function inserted by Swift 4.2 migrator.
fileprivate func convertToUIApplicationOpenExternalURLOptionsKeyDictionary(_ input: [String: Any]) -> [UIApplication.OpenExternalURLOptionsKey: Any] {
    return Dictionary(uniqueKeysWithValues: input.map { key, value in (UIApplication.OpenExternalURLOptionsKey(rawValue: key), value)})
}
Run Code Online (Sandbox Code Playgroud)

什么时候可以安全移除?

rob*_*off 6

大概该文件(或该文件的先前版本)中的某些函数调用此UIApplication方法:

func open(_ url: URL, options: [UIApplication.OpenExternalURLOptionsKey : Any] = [:], completionHandler completion: ((Bool) -> Void)? = nil)
Run Code Online (Sandbox Code Playgroud)

在iOS 12之前,该方法具有不同的签名:

func open(_ url: URL, options: [String : Any] = [:], completionHandler completion: ((Bool) -> Void)? = nil)
Run Code Online (Sandbox Code Playgroud)

当Xcode 10迁移项目时,它添加了convertToUIApplicationOpenExternalURLOptionsKeyDictionary函数并在对open(_:options:completionHandler:)方法的每次调用中都插入了对该函数的调用,以翻译选项字典。

如果将对open(_:options:completionHandler:)方法的每次调用更新为使用UIApplication.OpenExternalURLOptionsKey常量,则可以删除对的调用convertToUIApplicationOpenExternalURLOptionsKeyDictionary并完全删除函数。

  • 然后您可以安全地将其替换为:UIApplication.shared.open(url,options:[:],completionHandler:nil)并删除该函数 (2认同)