将文件也放入您的 iCloud 文档沙箱中,它们将在您的所有设备上保持同步。
您可以使用对项目的相对引用,因为它们将出现在文件系统中的相同相对点。
<ubiquitous container URL>/Documents/something.jpg
一个小问题是同步不是无缝的,如果该项目尚未在设备上,您将必须明确请求从 iCloud 下载该项目。
所以最原始的...
NSDictionary *dict = [urlToIcloudResource resourceValuesForKeys:@[NSURLUbiquitousItemIsDownloadedKey] error:&error];
NSNumber *isDownloaded = dict[NSURLUbiquitousItemIsDownloadedKey];
if (![isDownloaded boolValue]) {
BOOL res = [[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL:urlToIcloudResource error:&error];
}
因此,您可以继续使用当前将它们转储到文件系统中的策略,并且只使用对它们的字符串引用。iCloud 将使它们保持同步。
此解决方案的适用性确实取决于这些大 blob 是一次写入多次读取的对象(非常适合)还是经常读写类型的对象(更棘手)。
一个优点是,对于像这样的文本对象,txt
或者json
如果您将扩展名保留在文件中,iCloud 应该“正常工作”以保持多个设备编辑同步。
原始数据对象喜欢jpg
或pdf
将是最后一次编辑获胜。