iphone - 如何知道用户何时更改设置包

标签 iphone settings-bundle

我让用户在 iPhone 的设置区域中更改其设置。在下一次网络同步期间,我想将用户更改发送到服务器。但前提是做出改变。

但是我如何知道用户何时在设置区域中进行了更改?

如果可以的话,我希望避免选择始终发送信息,无论是否更改,或者首先从服务器获取信息,如果与用户默认值不同,则进行更新。

有没有一个好的、优雅的方法来解决这个问题? 感谢您的帮助!

一周后,没有任何答复... 这个问题是太难了还是根本没有任何意义?

最佳答案

啊,我真傻!在这里,我们以一种优雅的方式进行。在 XCode 内的 Apple 文档中搜索 AppPrefs,它将显示一个示例应用程序,它完全可以满足您的要求。只需编译并运行即可!它利用NSUserDefaultsDidChangeNotification

这是用于注册观察者的代码:

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(defaultsChanged:)
                                             name:NSUserDefaultsDidChangeNotification
                                           object:nil];
<小时/>

旧答案:

看起来您无法从 NSUserDefaults 中获取修改日期。目前我只能想到这样:

NSUserDefaults *previousDefaults = [someInstance previousUserDefaults];
NSUserDefaults *currentDefaults = [NSUserDefaults standardUserDefaults];

if([previousDefaults isEqualToDictionary:currentDefaults]) 
{
    [someOtherInstance sendModifiedUserDefaultsToServerWithDefaults:currentDefaults];
    [yetAnotherInstance saveModified]
}

当应用程序第一次启动时,您必须将用户默认值作为字典保存到磁盘:您的默认值。然后,每次打开应用程序时,您都会比较这两个词典。如果他们

关于iphone - 如何知道用户何时更改设置包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5482573/

相关文章:

iphone- [AVAssetReaderAudioMixOutput copyNextSampleBuffer] 错误

ios - Settings Bundle 切换开关只返回 YES

cocoa-touch - 设置包 - 默认值行为?

xcode - 如何在 xcode4 中本地化 Settings.bundle?

ios 8.2 及更高版本的设置包不显示所选项目但默认

iphone - iphone 中的文件选择器

iphone - 谁能帮我将数据附加到 plist 文件中?

iphone - 按名称调用 Objective-C 方法

iphone - ios facebook api 不触发 fbLogin

iphone - 隐藏设置包中的首选项