Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/121.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios CoreData和iCloud;如何跟踪上次保存到云中的设备?_Ios_Core Data_Icloud_Nspersistentstore - Fatal编程技术网

Ios CoreData和iCloud;如何跟踪上次保存到云中的设备?

Ios CoreData和iCloud;如何跟踪上次保存到云中的设备?,ios,core-data,icloud,nspersistentstore,Ios,Core Data,Icloud,Nspersistentstore,我有一个使用CoreData的应用程序,由iCloud支持。在一个用例中,具有本地存储的用户在数据已经存在的地方启用iCloud。我想提示用户决定是将本地数据迁移到iCloud还是只使用iCloud版本。作为其中的一部分,我想在iCloud中显示设备名称和版本的上次同步日期 我一直在修补我的NSPersistentStore的元数据,但它似乎没有同步到iCloud 有什么建议吗?您可以使用iCloud的键值存储来存储上次同步的设备名称和日期。对iCloud文件进行元数据查询,并检查iCloud中

我有一个使用CoreData的应用程序,由iCloud支持。在一个用例中,具有本地存储的用户在数据已经存在的地方启用iCloud。我想提示用户决定是将本地数据迁移到iCloud还是只使用iCloud版本。作为其中的一部分,我想在iCloud中显示设备名称和版本的上次同步日期

我一直在修补我的NSPersistentStore的元数据,但它似乎没有同步到iCloud


有什么建议吗?

您可以使用iCloud的键值存储来存储上次同步的设备名称和日期。

对iCloud文件进行元数据查询,并检查iCloud中最近的事务日志文件。请参阅下面的链接,了解使用此方法检查应用程序是否与iCloud正确同步的示例应用程序。

编辑: 我刚刚意识到我没有得到实际的设备名称,但一旦你找到了最新的日志文件,然后用它来获取设备。请注意,这个电话可能很贵

NSFileVersion *openedVersion = [NSFileVersion currentVersionOfItemAtURL:fileURL];
    return openedVersion.localizedNameOfSavingComputer;

我的建议无疑是不受欢迎的。在任何给定的时间尝试确定iCloud中的内容都会让你处于非常不稳定的境地。你可以让它在大部分时间都能工作,但总有一些情况下会出现故障

如果您在首次启用iCloud时确实必须导入一些数据,我建议您始终导入数据,然后在iCloud数据进入时进行重复数据消除。尽管听起来很难看,但这是唯一能保证与苹果的方法协同工作的方法


值得一看其他核心数据同步框架,如TICD和集成。他们对数据标识采取更明智的方法,这意味着您可以避免整个重复数据消除步骤。披露:我开发了合奏

是的,考虑到了这一点。不幸的是,无法保证k/v存储将与iCloud文档同步。我同意。上面邓肯的建议很方便,但iCloud并不能保证其他设备是否上传了其更新,以及其他设备是否下载了所有更新。另外,感谢大家对Ensembles的介绍。我已经签出了TICDS,但不喜欢它,因为数据仍然由SQLite存储支持,其内部是苹果私有API的一部分。