在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据 可以访问我的博客 www.fatbobman.com[1] ,获得更好的阅读体验 NSUbiquitousKeyValueStore 什么是 NSUbiquitousKeyValueStore NSUbiquitousKeyValueStore 可以理解为 UserDefaults 的网络同步版本。 (forKey: "count") 默认值为 0 •NSUbiquitousKeyValueStore 有更多的限制苹果并不推荐使用 NSUbiquitousKeyValueStore 保存数据量大、变化频繁且对 尽管 NSUbiquitousKeyValueStore 没有提供数据同步的原子支持,但在绝大多数情况下,NSUbiquitousKeyValueStore 会尽量保证在用户切换 iCloud 账户、重新登录 NSUbiquitousKeyValueStore 的基本工作流程如下: •将键值对保存到 NSUbiquitousKeyValueStore 中•NSUbiquitousKeyValueStore 首先将键值数据保存在内存中
我重新修改了 CloudStorage 的代码,现在可以同 AppStorage 完全一样将 UserDefaults 和 NSUbiquitousKeyValueStore 汇总到一起,在 SwiftUI 关于 NSUbiquitousKeyValueStore 请参阅 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据[2] 关于 AppStorage 可以阅读 @ 参考资料 [1] Fork 版本: https://github.com/fatbobman/CloudStorage [2] 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据: https://www.fatbobman.com/posts/nsubiquitousKeyvalueStore/ [3] @AppStorage 研究: https://fatbobman.com
homeDict= homeModel.yy_modelToJSONObject; NSLog(@"homeDict=%@",homeDict); //iCloud存储 NSUbiquitousKeyValueStore *myKeyValue = [NSUbiquitousKeyValueStore defaultStore]; NSArray *iCloudData = [myKeyValue objectForKey *myKeyValue = [NSUbiquitousKeyValueStore defaultStore]; NSArray *iCloudData = [myKeyValue objectForKey } return _deleteCommand; } - (void)deleteData:(NSDictionary*)data { //从iCloud中获取数据 NSUbiquitousKeyValueStore *myKeyValue = [NSUbiquitousKeyValueStore defaultStore]; NSArray *iCloudData = [myKeyValue objectForKey
MyPublished( @Published 的仿制版本 )、@PublishedObject(包装值为引用类型的 @Published 版本)、@CloudStorage(类似 @AppStorage ,但适用于 NSUbiquitousKeyValueStore AppStorage("age") public var age = 12 } Tom Lokhorst 写了一个类似 @AppStorage 的第三方库 —— @CloudStorage ,实现了在 NSUbiquitousKeyValueStore 在撰写 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据[9] 一文的时候,我尚未掌握本文介绍的方法。 BlogCodes/tree/main/Published [8] @AppStorage 研究: https://fatbobman.com/posts/appstorage/ [9] 在 SwiftUI 下使用 NSUbiquitousKeyValueStore 同步数据: https://www.fatbobman.com/posts/nsubiquitousKeyvalueStore/ [10] 修改后的 Fork 版本: https://github.com
用于跨平台的 CloudKit 如果希望首选项可以从安装了你的应用程序的其他 Apple 设备访问,请考虑使用 NSUbiquitousKeyValueStore。
ObservableDefaults - 让持久化数据优雅地融入 SwiftUI[21] ObservableDefaults是我创建的一个 Swift 库,提供两个实用的宏,用于将 UserDefaults和 NSUbiquitousKeyValueStore
为了简化开发者的工作,苹果在 2023 年的 WWDC 中推出了 CKSyncEngine[18] 框架,并已在其应用如 Freeform 和 NSUbiquitousKeyValueStore 中采用
3.或许可考虑通过使用NSUbiquitousKeyValueStore进行判断。 2、3两种方式都需要保证网络及账号状态正常的情况下才能检查,让用户自行判断或许最为简单。
写在前面的话 苹果基于 CloudKit 为开发者提供了三个主要的功能:CloudKit(保存结构化数据)、NSUbiquitousKeyValueStore(保存键值数据)以及 iCloud Documents
objc_release(v194); objc_release(v195); if ( v194 ) { v135 = objc_msgSend(&OBJC_CLASS___NSUbiquitousKeyValueStore