【问题标题】:Identifying non-app iCloud Key Value data识别非应用 iCloud 键值数据
【发布时间】:2013-06-12 20:57:41
【问题描述】:

我订阅NSUbiquitousKeyValueStoreDidChangeExternallyNotification 来监控来自 iCloud 的键值变化。收到后,我会处理包含的 userinfo 并应用我的业务逻辑。

但是,有时(尤其是在首次启动时)我收到的密钥似乎与系统相关,或者至少不是我的应用程序的一部分 -

AppleKeyboards
NSInterfaceStyle
AppleKeyboardsExpanded
AppleICUForce24HourTimeAirPlayShouldShowDebugButtonInPicker

  1. 如何识别此类密钥并避免尝试针对我的应用程序代码运行它们?我是否应该以某种方式“标记”我自己的数据以便识别它们?
  2. 我是否负责更新这些键的本地值? iCloud 发送它们一定是有原因的,但我不知道把它们放在哪里。它们在我的 NSUserDefaults 中吗?还是 iCloud 单独处理它们(在这种情况下,用户信息中包含它们似乎很奇怪)?

这就是我订阅通知的方式:

[[NSNotificationCenter defaultCenter] addObserver:self                                                   selector:@selector(iCloudStoreChanged:)
                                             name:NSUbiquitousKeyValueStoreDidChangeExternallyNotification
                                           object:store];

【问题讨论】:

  • 1) 您正在使用的 -[NSNotification addObserver:] 调用到底是什么? 2)你在使用一些奇怪的框架吗? 3) 你确定你没有在听 NSUserDefaultsDidChangeNotification 吗?
  • 我添加了我的 addObserver: - 我没有使用任何框架,也没有在我的代码中的任何地方监听 NSUserDefaultsDidChangeNotification。
  • 您不知道您的应用使用哪些键吗?为什么不只查找已知键?
  • 维护我的应用使用的键列表似乎不太可靠,并且在我进行更改时必须添加到此列表中。
  • 如果您不期望的钥匙在这里,有人把它们放在那里。也许您正在使用一些试图保存这些密钥的外部框架。尝试在设备上调试您的应用程序并在-[NSUbiquitousKeyValueStore setObject:forKey:] 和/或+[NSUbiquitousKeyValueStore defaultStore] 上中断

标签: iphone ios cocoa-touch icloud nsubiquitouskeyvaluestore


【解决方案1】:

朱利安就在这里。我没有使用任何框架,有点忘了之前我使用 MKiCloudSync 来同步我的 NSUserDefaults。我只能假设这些密钥是由系统添加到 NSUserDefaults 并传播到 iCloud 的。

【讨论】:

    猜你喜欢
    • 2012-07-15
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 1970-01-01
    • 2016-03-30
    • 2016-10-19
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多