
存储数据
|
157
他们故意关闭
iCloud
选项,我们应该让游戏仍然能够运行。也就是说将游戏进度
放到本地,而不是
iCloud
。
另外,用户有可能会登出
iCloud
,然后换另一个用户登录
iCloud
。通过保存并检查
FileManager
的
ubiquityIdentityToken
,就能判断出这种情况,如果检查到这个值
和最后存储的值不相同,我们应该抛弃游戏进度的本地拷贝,重新从
iCloud
下载
这个文件。
我们应该一直在后台队列中操作
iCloud
。
iCloud
操作通常需要一点时间,如果在主
线程中执行有可能拖慢游戏并导致游戏停止响应。
5.4
使用
iCloud
的键
–
值存储
问题
有时候我们想向
iCloud
中存储零星的数据。
解决方案
NSUbiquitousKeyValueStore
对象就像一个字典对象,包含了所有跨用户设备的共
享内容。
要从键值存储中检索值,使用下列代码:
//
从键值存储中检索值
let store = NSUbiquitousKeyValueStore.default
return Int(store.longLong(forKey: "levelNumber"))
要向键值存储中存入值,使用下列代码:
//
向键值存储中存入值
let store = NSUbiquitousKeyValueStore.default
store.set (Int64(value), forKey: "levelNumber")
//
确保修改被保存到磁盘
//
(注意:并非将本地
iCloud
容器同步到 ...