Swift 问题 - NSUserDefault 和 Settings Bundle 没有响应

Posted

技术标签:

【中文标题】Swift 问题 - NSUserDefault 和 Settings Bundle 没有响应【英文标题】:Swift Problems - NSUserDefault and Settings Bundle not responding 【发布时间】:2014-09-02 20:29:28 【问题描述】:

所以我设置了一个设置包来只做一件事。允许用户在我的应用程序中的 TouchUI 和 GestureUI 之间进行选择,出于某种奇怪的原因,我无法让 Settings Bundle 来控制它。即使我有 If else 语句,它也不会切换。最初我有var touchCheck = userDefaults.boolForKey("myGestureEnabledDisabled"),但当我继续关闭应用程序(多任务> SwipeUp应用程序)并通过跳板重新运行应用程序时,它根本没有改变布尔值。设置应用程序可能在NO 有捆绑包,但日志显示手势已开启。看完教程后,我将boolForKey 更改为valueForKey,这导致构建失败,并且代码中没有错误,如下所示。

    override func viewDidLoad() 
    var userDefaults = NSUserDefaults.standardUserDefaults()
    userDefaults.synchronize()
    var touchCheck = Bool(userDefaults.valueForKey("myGestureEnabledDisabled"))

    if touchCheck 

        whenGuestureIsEnabled()

     else 

        whenGestureIsDisabled()
        self.navBar.hidden = false

    


func whenGuestureIsEnabled() 

    NSLog("Gesture is suppose to be on")


func whenGestureIsDisabled() 

    NSLog("Gesture is OFF")


也许从我的想法来看,我不应该在 UIViewController 中执行此操作,但我在 youtube 教程中看到了这一点,它是在 OBJ-C 中。

【问题讨论】:

这个问题终于解决了吗?我正在整个互联网上寻找答案,但仍然无法让设置包正常工作。 【参考方案1】:

你应该转换为 bool,而不是创建一个新的:

//notice (Bool) cast in the beginning 
var touchCheck = (Bool)userDefaults.valueForKey("myGestureEnabledDisabled")

【讨论】:

我曾经有过这种情况,但无法让 Settings Bundle 更改 bool 值并启用 touchUI。它会隐藏navBar

以上是关于Swift 问题 - NSUserDefault 和 Settings Bundle 没有响应的主要内容,如果未能解决你的问题,请参考以下文章

Swift 问题 - NSUserDefault 和 Settings Bundle 没有响应

我如何访问 iOS 项目的 NSUserDefault 以做出原生反应?

NsMutable 不是 swift 中 [anyobject] 的子类型

我可以根据另一个 NSUserDefault 值保存 NSUserDefault 值吗?

读取 NSUserDefault 布尔值

转换为 Swift 3 破坏了自定义类编码/解码