如何使用 NSUserDefaults 注册用户默认值而不覆盖现有值?

2023-12-29

我有一个 AppDelegate 类+(void)initialize我用来注册一些默认值的方法。这是我使用的代码:

+ (void)initialize {
  NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys:@"NO", @"fooKey", @"YES", @"barKey", nil];

  [[NSUserDefaults standardUserDefaults] registerDefaults:defaults];
}

我还创建了 Preferences.xib,其中包含几个复选框(NSButton)显示首选项的状态。他们有义务NSUserDefaultsController使用相同的键(在本例中为 fooKey 和 barKey)。每次我启动应用程序并更改“默认值”时,它们都会在下次应用程序启动时恢复。

有没有办法注册“默认默认值”而不覆盖已经存在的值?也许每次我构建并启动应用程序时,都会重新创建其首选项文件?也许我应该取消复选框的绑定NSUserDefaultsController并使用首选项窗口控制器中的一些自定义代码自己维护键的值?

我想听听您选择的维护用户默认值的实现。

我使用的是 Mac OS X 10.6.2 和 XCode 3.2.1


从文档中-registerDefaults:(强调):

注册域的内容不会写入磁盘;每次应用程序启动时都需要调用此方法。您可以将 plist 文件放置在应用程序的 Resources 目录中,并使用从该文件中读取的内容调用 registerDefaults: 。

所以你的代码是在正确的轨道上。这就是注册默认值的方式。

我通常用这个-applicationDidFinishLaunching::

// Load default defaults
[[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];

使用 plist 可以轻松地在应用程序中添加和更改默认值,并且可以防止您犯下使用错误@"NO"也作为一个值。

Edit: Swift 3变体:

 UserDefaults.standard.register(defaults: NSDictionary(contentsOf: Bundle.main.url(forResource: "Defaults", withExtension: "plist")!)! as! [String : Any])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 NSUserDefaults 注册用户默认值而不覆盖现有值? 的相关文章

  • 使用 NSTimer 传递原始参数的正确方法

    我正在使用一个调用此方法的基本计时器 void refresh id obj if obj YES doSomething 我想从代码的某些区域以及计时器调用此方法 NSTimer scheduledTimerWithTimeInterva
  • 在 Cocoa 中声明对象时,我应该将它们设置为 nil 吗?

    假设我想创建一个实例NSString 根据另一个变量的值初始化为某个值 通常情况下 我会这样做 NSString string if foo 1 string Foo is one else string Foo is not one 然而
  • TextView、iOS 和 OSX 中的彩虹文本

    我正在尝试向我的应用程序添加一些不同的文本颜色以融合到图像中 我收到了很多用户想要彩虹文本颜色并重复的输入 例如这个词 stackoverflow看起来像这样 s red t orange a yellow c green k blue o
  • 使用常量 NSString 作为 NSUserDefaults 的键

    我正在使用 NSUSerDefaults 来存储用户首选项 我记得在某处读到过 将键设置为常量是一个好主意 我同意 以下代码是我目前拥有的 NSUserDefaults standardUserDefaults setObject NSNu
  • 在 iOS 应用程序中处理数据(选择什么?NSData、CoreData、sqlite、PList、NSUserDefaults)

    当我开发 iPhone 应用程序 时间跟踪器 待办事项列表等 时 我永远不知道处理数据的最佳方式是什么 有一次我使用了 plist 下次使用 sqlite 或 CoreData 您如何决定什么最适合您的项目 只谈数据管理 例如 如果您想开发
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • 如何在Mac的cocoa应用程序中允许用户的主文件夹的权限

    我有一个 Mac 应用程序 其中我正在从用户的主目录中删除一些数据 我的应用程序被拒绝 原因如下 The app only finds files in the Downloads folder It would be appropriat
  • 如何创建无法创建新文档的基于文档的应用程序?

    我有一个基于文档的应用程序 旨在处理现有文档 而不是创建新文档 如何防止应用程序在通过 Finder 打开应用程序时创建新的空白文档 您可以实现一个 NSApplication 委托协议方法 BOOL applicationShouldOp
  • 10.11 NSCollectionView - 动态确定单元格大小

    OS X v10 11 AppKit 发行说明 https developer apple com library mac releasenotes AppKit RN AppKit 10 11CollectionView建议可以根据每个项
  • 尝试将 indexPath 保存到 NSUserDefaults 时出错

    我试图保存 UICollectionView 的索引路径 但出现以下错误 libc abi dylib terminating with uncaught exception of type NSException 我的代码是 保存索引路径
  • 使用 pyobjc 将元数据写入 pdf

    我正在尝试使用以下 python 代码将元数据写入 pdf 文件 from Foundation import from Quartz import url NSURL fileURLWithPath test pdf pdfdoc PDF
  • Cocoa Accessibility API,我可以单击后台窗口而不激活它吗?

    我一直在寻找解决这个问题的方法 所以我想我应该寻找比我更伟大的头脑 我正在开发一个 Cocoa 应用程序 它使用 Accessibility API 来操作另一个程序 它是一个热键应用程序 我控制的应用程序通常会打开多个窗口 其中一些窗口隐
  • Cocoa 中播客应用程序的 Apple Api

    我正在为 mac 创建一个播客应用程序 用户可以在其中搜索 itunes 上的播客 是否有苹果内置的 api 我可以通过它从苹果 itunes 搜索和播放播客 或任何其他用于从 itunes 搜索播客的 api 谢谢 Edit 现在我找到并
  • 原生插入符位置 macos cocoa

    我希望能够使用 cocoa 或 appleScript 获取 Mac High Sierra 中任何应用程序内的全局插入符位置 我已经使用 NSEvent 来获取键盘和鼠标挂钩 但是有没有办法获取插入符位置挂钩 插入符号与鼠标位置不同 它会
  • 如何生成Mac应用程序的安装包?

    如何为 OS X 二进制文件以及一些配置和脚本文件创建单个安装程序包 最终文件夹应如下所示 任何帮助 将不胜感激 谢谢 如果您希望将各种东西放置在不同的位置 安装程序在这里 文档在那里 支持文件在这里等等 它们也非常适合提供安装体验的可配置
  • Apple 如何在机场菜单打开时更新它? (当 NSMenu 已经打开时如何更改它)

    我有一个状态栏项目 可以弹出一个 NSMenu 并且我有一个委托集 并且它已正确连接 void menuNeedsUpdate NSMenu menu工作正常 也就是说 该方法设置为在显示菜单之前调用 我需要监听该方法并触发异步请求 稍后在
  • 显示器连接或断开连接时的通知

    我正在开发一个 OS X 应用程序 该应用程序在所有连接的显示器的所有可用空间上显示自定义窗口 我可以通过调用 NSScreen Screens 获取可用显示对象的数组 我目前缺少的是一种判断用户是否将显示器连接到系统或从系统断开屏幕的方法
  • 使用 UIKeyCommand 检测删除键

    任何人都知道如何使用检测 删除 键UIKeyCommand在 iOS 7 上 当人们在使用 Swift 时遇到问题时 我认为用 Objective C 和 Swift 编写一个小型的 完整的例子可能是一个很好的答案 请注意 Swift 没有
  • iOS 使用 NSColor 与 UIColor?

    有什么区别UIColor and NSColor 什么时候会使用每一种 我碰到NSColor在试图弄清楚的同时UIColor用于 iOS 中的属性字符串 我理解使用UIColor对于 UIKit 等 但我不认为NSColor对于这种事情确实
  • 如何为 NSAttributedString 内的文本设置“隐藏”属性?

    我有一个 Cocoa 应用程序NSTextView控件将其文本保存在NSAttributedString 实际上我相信这是一个NSMutableAttributedString 我可以轻松地在该字符串内的不同字符范围上设置和修改不同的文本属

随机推荐

  • 如何在 XAML 中将 DependencyProperty 重置回默认值

    我正在实现一个用户可调的Effect使用滑块 滑块旁边有一个重置按钮 这个想法是允许用户重置回默认值Effect的属性在元数据中指定 我认为在 XAML 中执行此操作可能很简单 依赖属性实际上没有默认值 如果依赖属性没有本地值 它将通过值继
  • 声纳:声纳如何工作?

    我们希望在我们的项目中将 SonarQube 与一些 CI 工具一起使用 Sonar Server url 在 main 中配置pom xml 该项目有多名团队成员 那么当一名团队成员执行死刑时会发生什么声纳 声纳本地进行本地更改 然后另一
  • 获取 ios 中可用蓝牙设备的列表

    有没有办法在ios中获取可用蓝牙设备的mac地址列表 我正在开发一个程序 它可以使用蓝牙 MAC 地址查找附近的人 我确定你有 centralManager scanForPeripheralsWithServices nil option
  • 的后备图片

    Is
  • python ctype 递归结构

    我用 C 语言为驱动程序开发了一个 DLL 我用 C 编写了一个测试程序 该 DLL 工作正常 现在我想使用 Python 与这个 DLL 进行交互 我已经成功隐藏了大部分用户定义的 C 结构 但有一点我必须使用 C 结构 我对 pytho
  • Solr 和 Zookeeper 配置

    在生产环境中 是否应该在每台可能的服务器上设置 Solr 包括具有 Zookeeper 的服务器 谈论外部Zookeeper 服务器总数 5 情况1 所有 5 台服务器上都有 Solr Zookeeper 在 3 台服务器上 案例2 Sol
  • CodeAnalysis 是否会返回 CA2202 误报?或者我的代码真的有问题吗?

    我遇到了同样的问题解释here https stackoverflow com questions 29528876 for each loop with a collection of class instances multiple d
  • django更改tinymce中的字体大小和字体系列

    我的基本文件中有这个脚本
  • 使用 Retrofit POST 正文 JSON

    我正在尝试使用 Retrofit 库发布 JSONObject 但是当我在接收端看到请求时 内容长度为0 在RestService接口中 Headers Content type application json POST api v1 u
  • iOS 8 更改方向后无法调整模态表单的大小

    实际上我正在做的是在 iPad 上呈现模态形式 我自己的尺寸 520 X 400 第一次运行得很好 然后当我旋转时 纵向到横向或横向到纵向 我的模态表单更改为 ios 默认大小 另外 我没能 以编程方式再次更改模式表单尺寸 自从 一旦方向改
  • Heroku 应用程序崩溃,日志显示“No such file to load -- nokogiri (LoadError)”

    我有一个工作应用程序 添加了 Nokogiri 用于解析一些 xml 在本地运行良好 我的 Gemfile 包括 gem nokogiri I ran bundle install并验证了我的 Gemfile lock 包括DEPENDEN
  • R中的预分配列表

    在 R 中 在循环中扩展数据结构效率很低 我如何预分配list具有一定的尺寸 matrix通过以下方式可以轻松做到这一点ncol and nrow论据 如何在列表中做到这一点 例如 x lt list for i in 1 10 x i l
  • 如何找到实体框架的水晶报表?

    如何将 Crystal Reports 绑定到实体框架实体 我确实还没有找到解决方法 而且我还没有足够的积分来对现有问题进行投票 至于我 我阅读了下面的链接 http aspalliance com 2049 Use LINQ to Ret
  • 使用IoC时单元测试的策略应该是什么?

    在读完有关依赖注入和 IoC 的所有内容后 我决定尝试在我们的应用程序中使用 Windsor Container 它是一个 50K LOC 多层 Web 应用程序 所以我希望它不是一个矫枉过正的东西 我使用了一个简单的静态类来包装容器 并在
  • 修复我的网络活动指示器

    我的网络活动指示器有一个问题 有时它会在不应该显示的情况下继续显示 我为它编写了自己的管理器 并将其替换为使用NSAssert像这样的声明 void setNetworkActivityIndicatorVisible BOOL setVi
  • 如何在 Eclipse 中的 Android 库项目中引用外部 jar

    哦 安卓 我多么喜欢你的言辞 我有一个工作区 里面有一些项目 App1和App2是Android应用程序 Common是一个Android库项目 App1 和 App2 依赖于 Common 通过 Android 选项卡链接 Common
  • 更新命令行应用程序状态

    我有一个命令行应用程序 当前打印增加的百分比 1 2 3 4 输出是连续的 但我见过命令行工具显示更改 就好像它是内联更新一样 1 2 与第一个位置相同 3 与第一个位置相同 4 与第一个位置相同 我怎样才能做到这一点 我正在使用 Java
  • 将 3 列文件转换为矩阵格式

    我有一个如下例所示的文件格式 显示了 5 个人 包括他们自己 之间的关系 1 1 1 0 2 1 0 5 3 1 0 1 4 1 0 3 5 1 0 1 2 2 1 0 3 2 0 5 4 2 0 2 5 2 0 3 3 3 1 0 4 3
  • 静态属性和单例有什么区别?

    使用 C 实现的单例可能类似于 public class Singleton private static Singleton instance private Singleton public static Singleton Insta
  • 如何使用 NSUserDefaults 注册用户默认值而不覆盖现有值?

    我有一个 AppDelegate 类 void initialize我用来注册一些默认值的方法 这是我使用的代码 void initialize NSDictionary defaults NSDictionary dictionaryWi