- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有什么区别:
[[NSUserDefaults standardUserDefaults] registerDefaults:
[NSDictionary dictionaryWithObjectAndKey:anObject, @"something"]];
还有这个:
[[NSUserDefaults standardUserDefaults] setObject:anObject forKey:@"something"];
最佳答案
区别在于,您注册的第一个代码片段默认为用户未对“属性”进行任何更改时使用的代码片段。
因此,如果您想提供一个键名为“欢迎消息”的“属性”,您可以不让该属性返回 nil,而是插入一条默认消息“欢迎首次使用用户”,该消息将在出现时显示该属性没有发生任何变化。
这将简化您的逻辑,因为您不需要编写 if
测试来检查“属性”是否返回 nil,然后在这种情况下发出另一条消息。
NSString *greeting = [[NSUserDefaults standardUserDefaults] stringForKey:@"Greeting"];
if(greeting == nil) {
NSLog(@"Welcome first-time user!");
}
您发布的第二个代码片段用于将属性设置为另一个值。您将使用不同的设置方法(setString、setObject、setBoolean)来根据用户默认值中的程序状态来设置值。
编辑-----根据评论中的要求进行更新。
顾名思义,第一种方法是将值注册为默认值。第一次使用某个键名访问该属性时,该值对于对象将为 nil,对于 bool 值将为 false,对于数字为 0。如果程序中未设置值,然后执行一些“默认”操作(例如上面的示例),您可以为您的应用程序提供这些键的一些已预定义的值,而不是进行大量测试等。
放置 registerDefaults 的典型位置是 appDelegate 中的初始化方法。
然后,在程序中的某个位置,您可能想要设置这些字段的值,然后使用 setObject、setString、setBoolean...,并使用 stringForKey、objectForKey...进行检索
把它想象成这样
registerDefaults 是构造函数,您可以在其中为对象提供合理的值,否则您会得到一些我已经编写的默认值。然后,如果您想更改对象的属性,则不要使用“构造函数”,而是使用 set/get 方法。
关于iphone - -[NSUserDefaults registerDefaults :]? 有什么用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4931167/
我想了解的功能, [NSUserDefaults standardUserDefaults] registerDefaults:]; registerDefaults 方法是否设置默认值而不是实际值。
有什么区别: [[NSUserDefaults standardUserDefaults] registerDefaults: [NSDictionary dictionaryWithObject
我在使用设置 bundle 注册 NSUserDefaults 时遇到问题。也许其他人已经处理过这个问题,但只是忽略了,但我确信这要么是一个错误,要么是我们处理问题的方式不正确。 创建一个新词典并注册
我的代码如下: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
我的应用在安装时注册了六个默认调色板,用户可以再添加 30 个。在即将发布的版本中,我想在默认设置中添加第七个调色板。如果我使用 regiserDefaults: 将第七个添加到 NSUserDefa
这个问题在这里已经有了答案: What is the use of -[NSUserDefaults registerDefaults:]? (5 个答案) 关闭 9 年前。 当我在 applica
我到处都找遍了,找不到关于如何使用 registerDefaults() 的解释。 每篇询问如何设置默认值的帖子都会通过“使用 registerDefaults()”来回答,我遇到的一个小问题是我不知
我需要在 NSUserDefault 中存储一个数字参数,该参数必须默认为 1所以我写了这段代码: NSNumber *one = [NSNumber numberWithInt:100]; N
我正在 AppDelegate 中注册默认值: let defaults = NSUserDefaults.standardUserDefaults() let registratio
关于注册用户默认值的使用有很多答案,我仔细看了看,仍然对我所看到的行为感到困惑。 在我的设置包中,我有一个切换开关,我给标识符“共享”并给它一个默认值 YES。我在设置应用程序中看到了这个切换开关,但
我在应用程序启动时通过 [NSUserDefaults registerDefaults:] 调用注册了一堆首选项值。我需要在某个阶段用新值替换它们,但新值范围(键集)小于初始值范围。因此,在我再次调
当我为我的应用设置默认首选项时,我会执行以下操作: 1) 阅读 Root.plist从里面Settings.bundle入字典。 2) 我测试是否设置了首选项,如果没有,我将通过 [NSUserDef
我正在使用最新的 SDK 开发 iOS 应用。 我这样做: - (BOOL)application:(UIApplication *)application didFinishLaunchingWit
我已经在谷歌和这里搜索过,到目前为止还没有运气。 为了查明我的应用程序之前是否已启动,我使用了类似于 this StackOverflow answer 中的代码。 . 主要区别在于 key 的否定(
我需要注册默认首选项值,然后界面在启动时立即使用这些值来设置复选框状态等。 我在应用委托(delegate)中注册了默认值: - (void)applicationDidFinishLaunching
我在应用程序中有 4 个相互独立的用户设置。我想使用 NSUserDefaults.standardUserDefaults() 的适当方法检查每个设置的值对于每个键,如果在用户默认值中找不到任何键,
这是我的设置: myTextField 绑定(bind)到共享用户默认 Controller 中的键。用户只能在文本字段中输入数字。 每次加载应用程序时,我都会使用 [[NSUserDefaults
我是一名优秀的程序员,十分优秀!