【发布时间】:2013-12-10 19:46:53
【问题描述】:
我正在使用设置包来配置我的应用程序。作为副作用,在 iOS 设置中的应用程序之外可以使用相同的设置集。这很棒。但是有一个小问题——我确实需要对这些变化做出反应。例如,我有一个用户用来被其他人识别的名称,如果它发生变化,则必须进行服务器调用。如何处理?
编辑:放轻松,伙计们。我以前从未这样做过,而且很难阅读所有可用的指南。 Settings.bundle 不是一件显而易见的事情。无论如何,请随意对问题投反对票,但在这样做之前至少要花一分钟时间通读所有赞扬。
尝试了几种建议的方法,即在应用程序处于活动状态时使用通知和更直接地操纵默认值。第二种方法效果更好,因为它只在我期望的时候执行,而不是每次在应用程序中更改/添加/删除任何配置设置时执行。
- (void)applicationWillEnterForeground:(UIApplication *)application
{
NSString *nameOld = [[NSUserDefaults standardUserDefaults] stringForKey:kNameKey];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *nameNew = [[NSUserDefaults standardUserDefaults] stringForKey:kNameKey];
【问题讨论】:
-
检查值。与其他地方保存的默认版本进行比较。
-
不确定谁投了反对票...我完全知道如何添加观察者。这是一个清晰的技术。我想知道如何从 iOS 设置屏幕返回。我觉得@Duncan Groenewald 给了我一个想法。
-
@MartinR 我不知道为什么这是一个重复。该问题中没有任何内容可以解决我的问题。 developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Conceptual/… 这里也没有说什么。所以请详细说明。
-
@Schultz9999:您的问题是如何对应用设置的更改做出反应,这可以通过监听 NSUserDefaultsDidChangeNotification 来完成。还有一个演示该技术的示例应用程序:developer.apple.com/LIBRARY/IOS/samplecode/AppPrefs/…。 - 但是如果我误解了你的问题,我很抱歉......
-
@MartinR 现在是的,你是对的。那是最好的办法。这个问题真的是一个骗局。我会投票自己关闭。
标签: ios objective-c settings.bundle