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] 的子类型