本文介绍了在 Swift/Xcode 6 中返回设置包开关的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法返回存储的布尔键的值.

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 中返回设置包开关的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-16 03:29