问题标签 [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.
macos - NSUbiquitousKeyValueStore 在 macOS Sierra 上失败
当我在 macOS Sierra 上直接从 Xcode 运行我的应用程序后调用 NSUbiquitousKeyValueStore 的同步方法时,它返回 false 并在 Console.app 中打印以下错误:
在后台会话中拒绝来自客户端 com.apple.dt.Xcode 的服务 kTCCServiceUbiquity 的 TCCAccessRequest
据我所知,更改的密钥不会保存到 iCloud。它们在本地内存中被记住,但在应用重新启动后会丢失。
我相信我的所有权利都设置正确(在项目的 Capabalities 中启用了 iCloud KVS,全部选中)。我是否需要存档和导出我的应用才能在 macOS 上调试/测试 iCloud?
任何想法如何解决/解决这个问题?
swift - 如何从 NSUbiquitousKeyValueStore.default() 获取键数组?
我有一个键值存储,我想要一个键列表,以便我可以为每个结构分配一个标识符。我可以在 Playground 中执行此操作,但是相同的代码在 Xcode 中不起作用,并产生以下错误:
“属性”不能转换为“<<错误类型”>>
在这行代码上:
Playground 的完整代码如下:
在 Xcode 中,我有 Attributes 结构:
以下协议:
而这两个扩展:
同样,Playground 中的版本完美运行,那么另一个版本有什么问题呢?
编辑1:这是所有代码:
swift - 如何使用 Swift 在键值存储中指定字典类型?
假设以下字典:
我想按如下方式存储它:
我的问题是当我尝试访问它时:
我收到以下错误:
展开的可选值
为什么是这样?
swift - NSUbiquitousKeyValueStore 在 Watch OS 3.1.3 上不可用
在尝试让 iCloud 文档存储在手表Watchkit Extension Cannot Read from iCloud上工作失败后,我尝试简单地使用密钥库。但是,这样做我得到:
NSUbiquitousKeyValueStore 不可用。
根据 Apple 的说法,这应该是“始终可用”的。因此,如果这个基本共享在手表上不起作用,那么文档内容肯定不会。
这是通过简单地使用生成的:
从 iPhone 上工作得非常好,文档也是如此。它也适用于手表的模拟器,但不适用于实际的手表。
需要明确的是,我不明白为什么我不能在实际手表上使用 iCloud 的键值存储。这些应该从 Watch OS 2 开始可用。
ios - NSUbiquitousKeyValueStore 与 NSUserDefaults
来自Apple 的 NSUbiquitousKeyValueStore 文档:
如果您在用户未登录 iCloud 帐户时写入键值存储对象,则数据将存储在本地,直到下一次同步机会。当用户登录 iCloud 帐户时,系统会自动将您的本地磁盘键和值与 iCloud 服务器上的键和值进行核对。
因此,如果用户从未登录 iCloud 帐户,则键值存储对象将无限期地存储在本地,就像 NSUserDefaults 一样。
在这种情况下,我们是否都应该停止使用 NSUserDefaults 而只使用 NSUbiquitousKeyValueStore 作为所有应用程序的“默认值”?这种方法的缺点是什么?
我可以看到的一个优势是,从用户的角度来看,应用偏好将在他们的所有设备上同步,这很可能是更好的用户体验!
ios - 获取错误 `NSUbiquitousKeyValueStore` 此类不符合键的键值编码
我正在尝试使用 NSUbiquitousKeyValueStore 类来使用 iCloud 键值。但是当我尝试通过指定键获取值时,出现错误
[<NSUbiquitousKeyValueStore 0x6000002983d0> valueForUndefinedKey:]: this class is not key value coding-compliant for the key "some_key"
我该如何解决这个问题?
swift - iCloud 键值存储问题
我有以下代码将应用程序的数据推送到云端并使用 iCloud 值更新设备存储。
但是,它不会使用 iCloud 值更新设备存储。
要同步的两个最重要的值是硬币和积分,我将两者都包含在下面的代码中,以防出现问题。
更新 iCloud:
更新本地:
icloud - 当前设备的 NSUbiquitousKeyValueStore 通知
我NSUbiquitousKeyValueStore
用来在 iCloud 中存储用户首选项。为了确保我了解其NSUbiquitousKeyValueStore
工作原理,我成功地存储了一个String
值并在单独的设备上监控了该值。下面解释我的配置。
我首先观察外部更改Notification
时发布的内容:NSUbiquitousKeyValueStore
然后,我设置了一个String
作为 a 输入的值UITextField
:
为了确保这个工作,我在UIAlertController
响应通知的方法中创建了一个。我观察到在主设备上设置值后的六秒内,警报出现在辅助设备上。但是,在设置值后,我从未观察到警报出现在主设备上。
阅读文档后NSUbiquitousKeyValueStore
,我找不到主设备在更新后也不会收到通知的原因NSUbiquitousKeyValueStore
。
在将更新的值设置到之前,我是否需要一种解决方案来在本地保存更新的值NSUbiquitousKeyValueStore
?我可以在将值UserDefaults
持久保存在NSUbiquitousKeyValueStore
. 但是,UserDefaults
如果在尝试将它们保留在NSUbiquitousKeyValueStore
. 如果没有通知主设备从其持久化的更改,我什至会在通知观察中收到错误通知吗?如果我在成功时没有收到通知,我很难相信我会这样做。
有什么我遗漏的东西,还是这是预期的行为?
ios - 与其他开发者的应用共享 iCloud 键值存储
这个问题起初可能看起来很奇怪(而且很愚蠢),但请继续阅读......
我iCloud Key-Value Storage
在我的一个应用程序中使用过,现在我需要将此应用程序转移到另一个开发者帐户。但是,由于某种原因,如果应用程序使用了 iCloud 权利,就不可能转移应用程序(为什么没有警告?!?!)。
所以...换句话说,我需要删除我的原始应用程序并在我的新开发者帐户中创建一个新应用程序。但在此之前,我希望我现有的用户能够将他们的数据同步到一个通用的 iCloud 键值存储,但针对新的应用程序“容器”。
如果“新”应用程序是 Live,是否可以指向该应用程序 Cloud Container(来自我的旧应用程序)?(例如,我的旧应用程序将 iCloud 数据保存到新容器中)。
在阅读我自己的问题时,我只是认为“如果可能的话,这听起来像是一个重大的安全漏洞”,所以我的猜测是,不。但是 Apple 文档中没有任何内容表明这是不可能的。
我对涉及用户在外部数据库上保存数据的解决方案不感兴趣(我知道这是可能的,但不是我现在正在寻找的)。有没有办法将数据本地保存在磁盘上(在删除应用程序时不会被删除)然后从另一个应用程序中读取它?