问题标签 [nsubiquitouskeyvaluestore]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
253 浏览

swift - 为什么我的 iCloud KVS 观察者不工作

在我的应用程序中,我实现了一个Preferences看起来像这样的类。

我观察到键值存储的变化。但这print()永远不会执行。知道为什么吗?

0 投票
2 回答
330 浏览

ios - 需要 iCloud 时如何处理首次启动体验?

CloudKit用来存储公开可用的数据,并将新数据NSPersistentCloudKitContainer作为我的核心数据堆栈的一部分来存储/同步私有数据。

当用户打开我的应用程序时,他们处于 4 种状态中的 1 种状态:

  1. 他们是可以访问 iCloud 的新用户
  2. 他们是可以访问 iCloud 的老用户
  3. 他们是新用户,但由于某种原因无法访问 iCloud
  4. 他们是老用户,但由于某种原因无法访问 iCloud

状态 1 和 2 代表我的快乐之路。如果他们是新用户,我想在显示初始视图之前用一些数据播种用户的私人商店。如果他们是返回用户,我想从 Core Data 获取数据以传递给初始视图。

确定新老用户: 我的计划是使用NSUbiquitousKeyValueStore. 我对此的担忧是处理以下情况: 下载应用程序->被记录为之前启动过应用程序->删除并在新设备上重新安装/安装应用程序 我认为NSUbiquitousKeyValueStore需要一些时间来接收更新,所以我需要等到它完成同步后再移动到初始视图。那么问题来了,如果他们无法访问 iCloud,会发生什么?NSUbiquitousKeyValueStore如果无法接收更新,如何告诉我他们是否是回访用户?

确定 iCloud 访问权限: 根据我所做的研究,我可以检查iCloudFileManager.default.ubiquityIdentityToken是否nil可用,但这不会告诉我原因。我将不得不使用CKContainer.default().accountStatus来了解为什么 iCloud 不可用。问题是这是一个异步调用,我的应用程序会在了解他们的帐户状态之前继续前进。

我真的在这个问题上摸不着头脑。优雅地确保处理所有这些状态的最佳方法是什么?

0 投票
1 回答
151 浏览

ios - 如何模拟 NSUbiquitousKeyValueStore 进行单元测试?

所以我有一个我正在尝试对同时使用 UserDefaults 和 NSUbiquitousKeyValueStore 的类进行单元测试。我可以使用 UserDefaults(suiteName: #file) 轻松模拟 UserDefaults(例如),但我不知道如何模拟 NSUbiquitousKeyValueStore。我似乎在 SO 上找不到任何关于它的帖子,而且我的 google-fu 也没有。

这是我的测试课的开头,仅供参考:

0 投票
1 回答
43 浏览

swift - 在设备之间同步键值

我正在尝试从 NSUserDefaults 移动,以便值在设备之间同步。我尝试同步的值是一个布尔值,用于识别是否已完成初始数据导入。

我正在使用以下代码

如果我在我的 iPhone 上运行该应用程序,它会按预期工作,导入只工作一次。如果我然后在我的 iPad 上运行该应用程序,它会在不应该的时候再次导入,日志显示

第一次运行:假

0 投票
1 回答
64 浏览

ios - 如何确定“NSUbiquitousKeyValueStore.default.set”结果是否成功

我正在将数据从我的应用程序写入 iCloud,如下所示。如何判断这个过程是否成功?

参考:https ://developer.apple.com/documentation/foundation/nsubiquitouskeyvaluestore

0 投票
1 回答
32 浏览

ios - iOS - KeyValueStore 不能跨设备工作

我有一个应用程序将实现键值存储,以保存一些变量并跨设备同步。

我有一个具有以下内容的视图控制器:

在 viewDidLoad 我做

然后当用户看完我运行的视频时

为了检查“watched”变量的值,我在 didFinishLaunchingWithOptions 上运行它:

如果我多次测试该应用程序,则 val 的值会相应更改。但是,当我在不同的设备上进行测试时,val 返回 nul。如果我在这个新设备中使用该应用程序,“watched”的值会发生变化,但两个设备之间的值永远不会同步。

我读到有一个通知方法来检查存储的值是否实时更改,但在这种情况下,我在应用程序启动期间读取存储的值。那岂不是不需要了?

0 投票
0 回答
92 浏览

icloud - watchOS 的 NSUbiquitousKeyValueStore 等效项是什么?

App Groups遗憾的是,watchOS 仍然不支持NSUbiquitousKeyValueStore,除 watchOS 之外的每个平台都可以使用 NSUbiquitousKeyValueStore。我已经阅读了Keeping Your watchOS Content Up to Date并提到了 iCloud,它们听起来很简单,但没有提供示例。似乎我必须创建一个完整的客户端CloudKit基础架构来支持它,这似乎有点矫枉过正,然后要求其他平台也这样做,因为 watchOS 是个奇怪的球。

watchOS 中是否有我缺少的简单键/值 iCloud 存储等效项?当您将 watchOS 添加到混合中时,共享云数据似乎真的很困难。我尝试使用 iPhone 作为数据源并与 watchOS 进行通信,但它非常笨重,需要它们彼此在范围内,否则它们会不同步。任何帮助或指导将不胜感激!

0 投票
0 回答
40 浏览

ios - 什么可能导致某些用户的 NSUbiquitousKeyValueStore.synchronize 失败?

我使用NSUbiquitousKeyValueStore在我的应用程序中的设备之间同步首选项。对于我的一小部分用户(大约 0.1%),他们的偏好不会在他们的设备之间同步。保存到的值NSUbiquitousKeyValueStore可以正确读取,直到应用程序终止,但是当再次启动时,这些值就消失了。

我发现的一个线索是,如果我调用synchronize,它会为这些用户返回 false。这似乎是出现任何问题的唯一可靠迹象。文档指出,此函数将“...如果发生错误,则返回 false。例如,如果应用程序未使用正确的权利请求构建,则此方法返回 false。” 但由于这适用于 99.9% 的用户,因此很难想象这是一个权利请求问题。

我与一位遇到此问题的用户联系,他们报告说他们的 iCloud 帐户状态没有什么异常,而且他们使用的是最新版本的 iOS。

我已尝试侦听didChangeExternallyNotification并检查各种可能的情况,这些可能NSUbiquitousKeyValueStoreChangeReasonKey表明存储空间不足,但这些用户似乎都没有触发它们。

是否有任何其他已知原因synchronize可能返回 false,这可能有助于理解为什么这些用户无法同步他们的偏好?

0 投票
0 回答
156 浏览

swift - Swift UI NSUbiquitousKeyValueStore 直到下次启动才会更新

它工作得很好,除了信息在下次启动之前不会更新。

}