Tag: icloud api

CloudKit不会返回最新的数据

我遇到这个问题,我使用CloudKit将某些内容保存到icloud,但是立即读取结果不会返回插入的最新数据。 例 let todoRecord = CKRecord(recordType: "Todos") todoRecord.setValue(todo, forKey: "todotext") publicDB.saveRecord(todoRecord, completionHandler: { (record, error) -> Void in NSLog("Saved in cloudkit") let predicate = NSPredicate(value: true) let query = CKQuery(recordType: "Todos", predicate: predicate) self.publicDB.performQuery(query, inZoneWithID: nil) { results, error in if error != nil { dispatch_async(dispatch_get_main_queue()) { self.delegate?.errorUpdating(error) return } } else { NSLog("###### fetch […]

“iCloud核心数据”vs“iCloud核心数据”

我的问题是:如何在没有find太多“iCloud Cord Data”的情况下,find更多关于“使用iCloud的Core Data”的信息? 这两样东西的命名非常相似,这使得很难find关于其中一个的信息而没有发现另一个信息。 当我说“iCloud核心数据”时,我指的是iOS10中最近弃用的function。 “iCloud核心数据”涉及具有无处不在选项的核心数据存储,这意味着各个logging更新通过各种设备使用iCloud进行同步。 当我说“使用iCloud的核心数据”时,我的意思是构build在iCloud Drive服务上的不同function,我相信这是基于从设备到设备同步整个Core Data存储。 “使用iCloud的数据线”显然还在继续。 苹果将​​这两者区分开来:只有客户端Core Data iCloud API符号已被弃用。 使用iCloud的核心数据build立在iCloud Drive服务之上。 任何人都可以帮助指出一些有关更新的“使用iCloud的核心数据”的文档?

iCloud NSUbiquitousKeyValueStore初始同步/访问延迟 – 如何处理?

我正在使用NSUbiquitousKeyValueStore来存储一些应用程序设置。 我的逻辑是:当我在本地保存数据时,我把它保存到NSUbiquitousKeyValueStore也作为备份。 当我需要设置时,我在本地读取,如果在本地找不到数据(例如重新安装应用程序),则只使用iCloud键值存储。 如果用户有多个设备共享一个icloud ID,他可以在一台设备上写入设置并将它们下载到另一台(我警告他重写)。 我有一个奇怪的问题。 脚步: 安装一个应用程序,并将其数据保存到NSUbiquitousKeyValueStore。 确保数据在那里。 删除了应用程序(假设数据仍然存在于iCloud中)。 为了以防万一,等待几分钟,然后从Xcode内部安装并启动应用程序。 试图读取设置密钥使用[[NSUbiquitousKeyValueStore defaultStore] dataForKey:@“mykeyname”] – 有时可以,但有时键没有find! 等了15秒,再试一次。 成功。 困惑。 所以看起来像ios需要一些时间来为我的应用程序在dataForKey:call本地提供远程键值存储。 如果我写了这样一个系统(实际上我曾经 – 在不久之前,在另一个生活中),显然在询问和接收关键值数据之前必须有一个延迟。 所以我想通知一下:“我们在第一次启动时完成了下载/同步键值存储”或类似的事情。 据我所知,我可以在主线程中同步使用NSUbiquitousKeyValueStore(这对我来说很方便)。 但是[[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]返回一个有效的url,然后我得到“key is not found”。 所以我不能依靠它。 有没有办法确保NSUbiquitousKeyValueStore工作是一个下载? 尤其是在networking速度慢的情况下 UPDATE 添加[[NSUbiquitousKeyValueStore defaultStore]同步](如在苹果文档中写的)初始化和加载是有点帮助。 还有很多问题,以iCloud。 昨天我已经成功地将数据保存到手机1上的键值存储,并在手机2上恢复。今天,我已经删除了手机2上的应用程序,并试图恢复数据。 但即使[[NSFileManager的defaultManager] URLForUbiquityContainerIdentifier:nil]返回有效的URL,我调用[[NSUbiquitousKeyValueStore defaultStore]同步]我调用dataForKey:MY_DATA_KEY时得到nil。 当我尝试从手机1(应用程序仍然安装)从icloud恢复数据成功,但是当我重新安装在这个手机上的应用程序恢复不成功了。 临时解决scheme是:“closuresiCloud->文档和数据 – closures和打开networking – 打开文档和数据”,但你也应该等待几分钟,然后它应该工作。 所以,问题:1.你有这样的问题与iCloud? 2.有什么办法可以找出数据不可用还是只是没有下载? 3.是否有任何已知的“延迟”iCloud? 我听说过7秒左右,但显然不是这样。 4.看起来应用程序不是非阻塞的iCloud数据更新速度非常快(秒),但是当您重新安装应用程序icloud需要几分钟才能实现键值存储。 有什么办法可以强制这个过程? PS下面是我的CloudHelper供您参考 […]

为什么ubiquityIdentityToken返回零?

NSFileManager.defaultManager().ubiquityIdentityToken某些设备上的NSFileManager.defaultManager().ubiquityIdentityToken在某些情况下返回nil,即使我在Capabilities中设置了iCloud Documents ,并且在设备上login到iCloud。 ubiquityIdentityToken如何可靠地运行? 难道我做错了什么? 在iPhone上,它会正确地返回一个真实的令牌,但是在iPad上它会返回零,即使我login。