如何使用 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 注册用户默认值而不覆盖现有值? 的相关文章

  • activeProcessorCount 和processorCount 之间有什么区别?

    The NSProcessInfo类有两个名为processorCount and activeProcessorCount 该文档对于处理核心和活动处理核心之间的区别尽可能没有帮助 或者 换句话说 什么才算是一个inactive可可的处理
  • Cocoa 卸载驱动器但不弹出它

    你知道要卸载驱动器吗without将其弹出 NSWorkspace有一些卸载驱动器的方法 但它也会弹出它们 任何想法 我按如下方式执行此操作 它会卸载驱动器但不会弹出它 其实我想弹出磁盘 只能卸载磁盘 P 请分享如何弹出磁盘 DASessi
  • 使用 NSWorkspace 获取所有正在运行的进程

    我想获取 MacO 中所有正在运行的进程的列表 当我使用 myWorkspace runningApplications 我只得到当前用户应用程序的列表 我如何找到 root 或 mysql 所有者的所有进程的列表 看一下技术问答 QA11
  • 表视图未根据绑定更新

    这是一个非常新手的问题 这是我以前做过很多次的事情 但这次我遗漏了一些东西 在我的 AppDelegate h 文件中 我声明一个 NSArray 并将其设置为属性 interface AppDelegate NSObject NSArra
  • 你使用什么样的类别方法来使Cocoa编程变得更容易?

    我使用 Cocoa 内置类的一系列类别方法来让我的生活更轻松 我将发布一些示例 但我真的很想看看其他编码人员想出了什么 有哪些方便的分类方法you using 示例 1 implementation NSColor MyCategories
  • NSImage 的 ressizedImageWithCapInsets ?

    In UIKit我们有 UIImage resizableImageWithCapInsets UIEdgeInsets capInsets 有类似的东西吗AppKit用于创建可平铺的NSImage NSImage 在 10 10 Yose
  • 在 Swift 3 中以编程方式创建没有 XIB 的 NSViewController

    我正在尝试在不使用 Interface Builder 的情况下制作 macOS 应用程序 我的项目已构建并运行 但我的主视图控制器似乎没有加载其视图 那就是viewDidLoad 方法未被调用 我正在使用 Xcode beta 8 0 b
  • 为什么类方法中的“self = [[Rectangle alloc] init]”是错误的?

    在 Apple 的文档 Objective C 编程语言 中 第 48 页说道 Rectangle rectangleOfColor NSColor color self Rectangle alloc init BAD self setC
  • NSTableView 在编辑时点击 Tab 键可从行跳转到行

    我有一个 NSTableView 编辑时 如果我点击选项卡 它会自动跳到下一列 这太棒了 但是当我编辑最后一列中的字段并点击选项卡时 我希望焦点跳转到下一行的第一列 有什么建议么 感谢 Michael 提供的起始代码 它非常接近最终的工作结
  • 不区分大小写的 NSString 比较

    使用此代码我可以比较字符串值 elementName isEqualToString Response 但这是区分大小写的 有没有办法比较字符串而不区分大小写 有一个caseInsensitiveCompare 方法上NSString 你为
  • NSTextview:如何获取插入点的字形矩形?自定义文本视图?

    我似乎找不到任何有关如何获取插入点的矩形的文档 我试图在文本插入点 插入点正下方显示一个视图 如自动完成 我正在考虑制作一个自定义文本视图 但如果我可以避免它 那对我的情况来说将是理想的 谢谢 NSRect rectForActiveRan
  • 如何让程序在登录时自动启动?

    如何设置菜单栏应用程序在登录时自动启动 我希望这是默认的 我可以简单地通过在 info plist 中添加一个 bool 来做到这一点吗 此解决方案仅适用于非沙盒应用程序 LSSharedFile此解决方案中使用的功能仅适用于非沙盒应用程序
  • 从 NSString 中去除非字母数字字符

    我正在寻找一种快速简便的方法来从文本中删除非字母数字字符NSString 可能使用的东西NSCharacterSet 但我累了 似乎没有什么返回只包含字符串中字母数字字符的字符串 我们可以通过拆分然后合并来做到这一点 组件Separated
  • 从选定的文件夹中获取大小 >100MB 的文件列表及其路径目标 c

    我想获取我的 mac 系统的所有文件及其路径和大小的列表 由此 我只想过滤那些文件大小超过 100 MB 的文件 我使用下面的代码获取了系统的大小 NSError error NSFileManager fileManager NSFile
  • 用xCode制作图表[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 您好 我需要绘制一些数组来分析信号 我有一个可可项目正在进行 谁能告诉我在哪里可以找到简化这项任务的工具 基本上我想像在图形计算器上一样显
  • Swift - 将图像从 URL 写入本地文件

    我学习 swift 的速度相当快 并且我正在尝试开发一个下载图像的 OS X 应用程序 我已经能够将要查找的 JSON 解析为 URL 数组 如下所示 func didReceiveAPIResults results NSArray pr
  • 具有同步功能的 iPhone 离线应用程序

    我正在考虑构建一个可以在离线状态下和在线状态下一样运行的应用程序 由于应用程序在离线状态下无法与服务器通信 因此需要进行某种程度的同步 在规划 iPhone 同步离线操作时 有哪些值得阅读和开始思考的好工具 与苹果已经提供的工具来帮助解决这
  • 将 NSWindow 的内容变灰

    我有一个NSWindow with 2 NSViews an NSSplitView和一个习惯NSView 访问数据以填充这些视图可能需要一些时间 在此期间 我想将这些视图的内容灰显 我的第一个方法是有一个黑色的第三个NSView覆盖另外2
  • NSTokenField:标记的不同颜色

    我在我的 xib 中创建了一个 NSTokenField 我想在 tokenField 中显示不同颜色的令牌 含义 一些标记将是蓝色的 其余的将是红色的 根据其内容 那可能吗 以下代码对我不起作用 我希望有人能帮助我 id tokenFie
  • 为 Linux 编译 Objective-C 应用程序(API 覆盖范围)

    我可能在这里问一些奇怪的问题 但我不确定从哪里开始 问题是我正在考虑使用 Obj C 和 Foundation 类在 Mac 上编写一个命令行工具 但存在一个非常大的风险 那就是我希望能够为不同的 Linux 发行版编译它 以便将来作为服务

随机推荐

  • 如何在 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