【问题标题】:Your app uses the “prefs:root=” non public URL scheme. Best plan to update old code? [duplicate]您的应用使用“prefs:root=”非公共 URL 方案。更新旧代码的最佳计划? [复制]
【发布时间】:2019-05-15 04:48:27
【问题描述】:

所以我之前发布过关于这个问题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的代码

但是我很困惑,因为我在任何地方都找不到那个类,如果它是一个类,为什么这个类不大写?

如何在上面的代码sn-p中使用它。

我认为它是 String 的子类,但我不知道在哪里可以找到它,也不知道如何安全地将更改合并到现有代码中。

对此非常困惑,感谢您提供任何见解。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    我得到一个类型 '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 语言的语言术语。

    【讨论】:

    • 谢谢。在更新到 4.2 的过程中,我们将看看这是否有效
    • 到目前为止一切顺利,感谢您的帮助@matt!
    猜你喜欢
    • 1970-01-01
    • 2019-04-05
    • 2019-05-14
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多