所以我以前发布过有关此问题的here.
如您所见,我被拒绝了。
我的问题是如何更新此代码以使用openSettingsURLString而不是UIApplication.shared.openURL
经过一番询问和一些研究之后,我发现我必须对此进行更改:
static func openSettingsAlert(_ title: String, message: String, settingsURL: String) -> UIAlertController {
let alertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
let settingsURL = URL(string: settingsURL)
if let url = settingsURL {
DispatchQueue.main.async(execute: {
UIApplication.shared.openURL(url)
})
}
}
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
alertController.addAction(settingsAction)
return alertController
}
转换为使用this
的代码但是我很困惑,因为我无法在任何地方找到该班级,如果是班级,为什么班级不大写?
如何在上面的代码段中使用它。
我认为它是String的子类,但我不知道在哪里可以找到它,也不知道如何将更改安全地合并到现有代码中。
对此很困惑,谢谢您的见解。
答案 0 :(得分:0)
我收到的类型为'UIApplication'的成员没有'openSettingsURLString'
好吧,您可以从文档中看到类型UIApplication 确实具有此成员。在这里:
https://developer.apple.com/documentation/uikit/uiapplication/1623042-opensettingsurlstring
它是UIApplication的静态只读属性。 (这就是为什么它不大写;它是一个属性。)它的用法如下:
let url = URL(string: UIApplication.openSettingsURLString)!
UIApplication.shared.open(url)
如果您不能以这种方式使用它,那一定是因为您使用的是过时的Swift版本。在这种情况下,您应该写:
let url = URL(string:UIApplicationOpenSettingsURLString)!
UIApplication.shared.open(url)
但是,您不应该使用过时的Swift版本。可以肯定的是,这不是犯罪,但这肯定会使我们在Stack Overflow上与我们其他人的交流变得困难。到目前为止,Xcode 10和Swift 4.2已经存在很长时间了,您应该升级到它们,以便与其他所有人位于同一页面上。否则,您只是在尝试说一种不同于我们其他人的语言-一种我们大多数人已经忘记的古老语言。更不用说您与在线文档不同步了,在线文档中没有显示旧版Swift语言的语言术语。