问题描述
我无法返回存储的布尔键的值.
I have difficulties returning the value of a stored boolean key.
我的 root.plist 看起来像这样:
My root.plist looks like this:
我在 AppDelegate 中有这个:
I've got this in AppDelegate:
let a = NSUserDefaults.standardUserDefaults().boolForKey("sound")
if a { // This is where it breaks
println("sound is on")
}
知道我做错了什么吗?
推荐答案
首先,您应该注册您的默认值,以便同步所有内容并分配默认值.然后你就会知道存在一个值.这些值在启动时不会自动同步.
First you should register your defaults so everything is sync'd up and defaults are assigned. Then you'll know a value exists. These values are not automatically synchronized on startup.
var appDefaults = Dictionary<String, AnyObject>()
appDefaults["sound"] = false
NSUserDefaults.standardUserDefaults().registerDefaults(appDefaults)
NSUserDefaults.standardUserDefaults().synchronize()
let a = NSUserDefaults.standardUserDefaults().boolForKey("sound")
if a { // This is where it breaks
println("sound is on")
}
以下是相关文章的摘录.
Below is an excerpt from a relevant article.
请记住,当您的应用程序使用设置包时,您还应该使用 registerDefaults.由于您已经在设置包的 plist 中指定了默认值,您可能希望您的应用程序自动选择这些值.然而,事实并非如此.设置包中包含的信息只能由 iOS Settings.app 读取,而不会由您的应用读取.为了让您的应用使用与 Settings.app 中显示的相同的默认值,您必须手动将用户默认键及其默认值复制到单独的 plist 文件中,并将其注册到默认数据库,如上所示.
和 此处 是直接来自 Apple 的相关讨论.
And HERE is the relevant discussion directly from Apple.
注册默认值
讨论
如果没有注册域,则使用指定的字典创建一个,并将 NSRegistrationDomain 添加到搜索列表的末尾.注册域的内容不写入磁盘;每次应用程序启动时都需要调用此方法.您可以将 plist 文件放在应用程序的 Resources 目录中,并使用从该文件中读入的内容调用 registerDefaults:.
这篇关于在 Swift/Xcode 6 中返回设置包开关的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!