当前位置: 首页 > 面试题库 >

如何在Swift中使用UserDefaults?

苏鸿羽
2023-03-14
问题内容

如何在Swift中使用UserDefaults保存/检索字符串,布尔值和其他数据?


问题答案:

参考:NSUserdefault objectTypes

商店

UserDefaults.standard.set(true, forKey: "Key") //Bool
UserDefaults.standard.set(1, forKey: "Key")  //Integer
UserDefaults.standard.set("TEST", forKey: "Key") //setObject

取回

 UserDefaults.standard.bool(forKey: "Key")
 UserDefaults.standard.integer(forKey: "Key")
 UserDefaults.standard.string(forKey: "Key")

去掉

 UserDefaults.standard.removeObject(forKey: "Key")

删除所有键

 if let appDomain = Bundle.main.bundleIdentifier {
UserDefaults.standard.removePersistentDomain(forName: appDomain)
 }

Swift 2及以下

商店

NSUserDefaults.standardUserDefaults().setObject(newValue, forKey: "yourkey")
NSUserDefaults.standardUserDefaults().synchronize()

取回

  var returnValue: [NSString]? = NSUserDefaults.standardUserDefaults().objectForKey("yourkey") as? [NSString]

去掉

 NSUserDefaults.standardUserDefaults().removeObjectForKey("yourkey")

寄存器

registerDefaults:将registrationDictionary添加到每个搜索列表的最后一项。这意味着在NSUserDefaults在所有其他有效位置中查找值之后,它将查找已注册的默认值,从而使它们可用作“后备”值。已注册的默认值永远不会存储在应用程序的运行之间,并且仅对注册它们的应用程序可见。

默认配置文件中的默认值将被自动注册。

例如从启动检测应用程序,创建用于保存启动的结构

struct DetectLaunch {
static let keyforLaunch = "validateFirstlunch"
static var isFirst: Bool {
    get {
        return UserDefaults.standard.bool(forKey: keyforLaunch)
    }
    set {
        UserDefaults.standard.set(newValue, forKey: keyforLaunch)
    }
}
}

在应用启动时注册默认值:

UserDefaults.standard.register(defaults: [
        DetectLaunch.isFirst: true
    ])

删除应用终止时的价值:

func applicationWillTerminate(_ application: UIApplication) {
    DetectLaunch.isFirst = false

}

并检查条件为

if DetectLaunch.isFirst {
  // app launched from first
}

UserDefaults套件名称

另一个属性套件名称,主要用于“
应用程序组”概念
,这是我从此处获取的示例方案:

用例是我想用一个标识符来分隔我的UserDefaults(不同的业务逻辑可能要求Userdefaults分别分组),就像Android的SharedPreferences一样。例如,当我的应用程序中的用户单击注销按钮时,我想清除与他的帐户相关的默认设置,而不是设备的位置。

let user = UserDefaults(suiteName:"User")


 类似资料:
  • 问题内容: 我想在我的Swift应用程序中绘制折线。 SWIFT代码 错误: 我找不到解决方案。 问题答案: 首先 ,必须创建一个。 自iOS 7起已弃用,尽管您仍可以在Objective-C中使用它,但在Swift中不支持它。 其次 ,您必须在委托方法中创建并返回一个(不要将其传递给)。 在方法中,传递对象(而不是or )。 以解释传递给哪个对象与返回的对象之间的区别。) 因此,在该方法中,删除

  • 问题内容: 有没有人设法使此功能在Swift中工作? 苹果文档:https : //developer.apple.com/library/prerelease/mac/documentation/Carbon/Reference/QuartzEventServicesRef/index.html#//apple_ref/c/func/CGEventTapCreate 以下是CGEventTapC

  • 问题内容: 在Objective-C中,我们使用以下代码为视图设置RGB颜色代码: 如何在Swift中使用它? 问题答案: 这是该函数的Swift版本(用于获取值的UIColor表示形式):

  • 问题内容: 有人能帮我吗?我找不到完整的语法示例。 问题答案: 不清楚您要问 的 是什么 ,但我注意到您在代码中有几个错误: 您应该创建使用 返回,因此无需将其包装在内部(也称为实例化新对象)。 完成处理程序是一个闭包,下面是创建该特定闭包的方法: } 这是更新的代码:

  • 问题内容: 我正在尝试将此代码段转换为Swift。由于某些困难,我正在努力下车。 我遇到的第一个也是主要的问题是如何定义和使用C结构。我认为,在上述代码的第一行()中,我认为他们正在定义从struct sockaddr_in(?)调用的实例。我试图声明这样的。 但是我 在调用中 得到了 参数’sin_len’ 的错误 Missing参数 错误 , 这是可以理解的,因为该结构需要多个参数。所以我再次

  • 问题内容: 我阅读了Xcode 6的新增功能。本文介绍了有关Xcode 6的一些新功能,并说: 命令行 Xcode的调试器包括Swift语言的交互式版本,称为REPL(Read-Eval-Print- Loop)。使用Swift语法来评估正在运行的应用程序并与之交互,或者在类似脚本的环境中编写新代码。REPL可从Xcode控制台的LLDB或Terminal中获得。 我想知道如何获得REPL? 问题