问题标签 [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.
swift - 为什么我的 iCloud KVS 观察者不工作
在我的应用程序中,我实现了一个Preferences
看起来像这样的类。
我观察到键值存储的变化。但这print()
永远不会执行。知道为什么吗?
ios - 需要 iCloud 时如何处理首次启动体验?
我CloudKit
用来存储公开可用的数据,并将新数据NSPersistentCloudKitContainer
作为我的核心数据堆栈的一部分来存储/同步私有数据。
当用户打开我的应用程序时,他们处于 4 种状态中的 1 种状态:
- 他们是可以访问 iCloud 的新用户
- 他们是可以访问 iCloud 的老用户
- 他们是新用户,但由于某种原因无法访问 iCloud
- 他们是老用户,但由于某种原因无法访问 iCloud
状态 1 和 2 代表我的快乐之路。如果他们是新用户,我想在显示初始视图之前用一些数据播种用户的私人商店。如果他们是返回用户,我想从 Core Data 获取数据以传递给初始视图。
确定新老用户:
我的计划是使用NSUbiquitousKeyValueStore
. 我对此的担忧是处理以下情况:
下载应用程序->被记录为之前启动过应用程序->删除并在新设备上重新安装/安装应用程序
我认为NSUbiquitousKeyValueStore
需要一些时间来接收更新,所以我需要等到它完成同步后再移动到初始视图。那么问题来了,如果他们无法访问 iCloud,会发生什么?NSUbiquitousKeyValueStore
如果无法接收更新,如何告诉我他们是否是回访用户?
确定 iCloud 访问权限:
根据我所做的研究,我可以检查iCloudFileManager.default.ubiquityIdentityToken
是否nil
可用,但这不会告诉我原因。我将不得不使用CKContainer.default().accountStatus
来了解为什么 iCloud 不可用。问题是这是一个异步调用,我的应用程序会在了解他们的帐户状态之前继续前进。
我真的在这个问题上摸不着头脑。优雅地确保处理所有这些状态的最佳方法是什么?
ios - 如何模拟 NSUbiquitousKeyValueStore 进行单元测试?
所以我有一个我正在尝试对同时使用 UserDefaults 和 NSUbiquitousKeyValueStore 的类进行单元测试。我可以使用 UserDefaults(suiteName: #file) 轻松模拟 UserDefaults(例如),但我不知道如何模拟 NSUbiquitousKeyValueStore。我似乎在 SO 上找不到任何关于它的帖子,而且我的 google-fu 也没有。
这是我的测试课的开头,仅供参考:
swift - 在设备之间同步键值
我正在尝试从 NSUserDefaults 移动,以便值在设备之间同步。我尝试同步的值是一个布尔值,用于识别是否已完成初始数据导入。
我正在使用以下代码
如果我在我的 iPhone 上运行该应用程序,它会按预期工作,导入只工作一次。如果我然后在我的 iPad 上运行该应用程序,它会在不应该的时候再次导入,日志显示
第一次运行:假
ios - 如何确定“NSUbiquitousKeyValueStore.default.set”结果是否成功
我正在将数据从我的应用程序写入 iCloud,如下所示。如何判断这个过程是否成功?
参考:https ://developer.apple.com/documentation/foundation/nsubiquitouskeyvaluestore
ios - iOS - KeyValueStore 不能跨设备工作
我有一个应用程序将实现键值存储,以保存一些变量并跨设备同步。
我有一个具有以下内容的视图控制器:
在 viewDidLoad 我做
然后当用户看完我运行的视频时
为了检查“watched”变量的值,我在 didFinishLaunchingWithOptions 上运行它:
如果我多次测试该应用程序,则 val 的值会相应更改。但是,当我在不同的设备上进行测试时,val 返回 nul。如果我在这个新设备中使用该应用程序,“watched”的值会发生变化,但两个设备之间的值永远不会同步。
我读到有一个通知方法来检查存储的值是否实时更改,但在这种情况下,我在应用程序启动期间读取存储的值。那岂不是不需要了?
icloud - watchOS 的 NSUbiquitousKeyValueStore 等效项是什么?
App Groups
遗憾的是,watchOS 仍然不支持NSUbiquitousKeyValueStore,除 watchOS 之外的每个平台都可以使用 NSUbiquitousKeyValueStore。我已经阅读了Keeping Your watchOS Content Up to Date并提到了 iCloud,它们听起来很简单,但没有提供示例。似乎我必须创建一个完整的客户端CloudKit
基础架构来支持它,这似乎有点矫枉过正,然后要求其他平台也这样做,因为 watchOS 是个奇怪的球。
watchOS 中是否有我缺少的简单键/值 iCloud 存储等效项?当您将 watchOS 添加到混合中时,共享云数据似乎真的很困难。我尝试使用 iPhone 作为数据源并与 watchOS 进行通信,但它非常笨重,需要它们彼此在范围内,否则它们会不同步。任何帮助或指导将不胜感激!
ios - 什么可能导致某些用户的 NSUbiquitousKeyValueStore.synchronize 失败?
我使用NSUbiquitousKeyValueStore在我的应用程序中的设备之间同步首选项。对于我的一小部分用户(大约 0.1%),他们的偏好不会在他们的设备之间同步。保存到的值NSUbiquitousKeyValueStore
可以正确读取,直到应用程序终止,但是当再次启动时,这些值就消失了。
我发现的一个线索是,如果我调用synchronize,它会为这些用户返回 false。这似乎是出现任何问题的唯一可靠迹象。文档指出,此函数将“...如果发生错误,则返回 false。例如,如果应用程序未使用正确的权利请求构建,则此方法返回 false。” 但由于这适用于 99.9% 的用户,因此很难想象这是一个权利请求问题。
我与一位遇到此问题的用户联系,他们报告说他们的 iCloud 帐户状态没有什么异常,而且他们使用的是最新版本的 iOS。
我已尝试侦听didChangeExternallyNotification
并检查各种可能的情况,这些可能NSUbiquitousKeyValueStoreChangeReasonKey
表明存储空间不足,但这些用户似乎都没有触发它们。
是否有任何其他已知原因synchronize
可能返回 false,这可能有助于理解为什么这些用户无法同步他们的偏好?
swift - Swift UI NSUbiquitousKeyValueStore 直到下次启动才会更新
它工作得很好,除了信息在下次启动之前不会更新。
}