Objective c 应用程序检索iCloud图像后,iCloud图像是否缓存在iOS设备中?
我有一个简单的UITableView,其中每个单元格都有一张用户可能用iOS设备摄像头拍摄的缩略图 如果iCloud已启用,则图像将保存在其中。然而,我想知道在加载图像时是否会发生某种缓存,因为我注意到第一次加载时速度很慢,即使在屏幕上显示单元格时再次调用代码,图像也会显示得很快 这是相关的代码片段,我省略了构建单元的逻辑,我认为它不相关,因为问题是关于其他方面的:Objective c 应用程序检索iCloud图像后,iCloud图像是否缓存在iOS设备中?,objective-c,ios,uitableview,icloud,Objective C,Ios,Uitableview,Icloud,我有一个简单的UITableView,其中每个单元格都有一张用户可能用iOS设备摄像头拍摄的缩略图 如果iCloud已启用,则图像将保存在其中。然而,我想知道在加载图像时是否会发生某种缓存,因为我注意到第一次加载时速度很慢,即使在屏幕上显示单元格时再次调用代码,图像也会显示得很快 这是相关的代码片段,我省略了构建单元的逻辑,我认为它不相关,因为问题是关于其他方面的: - (UITableViewCell *)tableView:(UITableView *)table cellForRowAtI
- (UITableViewCell *)tableView:(UITableView *)table cellForRowAtIndexPath:(NSIndexPath *)indexPath {
// logic for retrieve data and build cell
NSURL *ubiquityUrl = [fm URLForUbiquityContainerIdentifier:nil];
NSURL *docURL = [ubiquityUrl
URLByAppendingPathComponent:[NSString stringWithFormat:@"P_%@_%@.jpg",imgId,@"thumbnail"]
isDirectory:NO];
// this a custom object extending UIDocument
IP2DataDocument *dataDocument = [[IP2DataDocument alloc] initWithFileURL:docURL];
[dataDocument openWithCompletionHandler:^(BOOL success) {
if (success) {
NSLog(@"iCloud document opened");
// logic for filling table cell picture
} else {
NSLog(@"failed opening document from iCloud");
}
}];
// returning cell
}
我可以在Xcode中看到“iCloud文档已打开”,每次都显示该单元格。
如果出现某种缓存,您能指出缓存的位置和方式吗?这是您的docURL或
NSURL *ubiquityUrl = [fm URLForUbiquityContainerIdentifier:nil];
您无法直接访问iCloud。您可以访问启用iCloud的等效本地位置(ubiquityUrl)。如果您尝试获取的文件尚未在本地下载,则本地iCloud守护进程将在您访问时下载该文件。一旦发生这种情况,它将本地存储在您的设备中。所以下一次,您尝试使用docURL再次访问它,因为这会更快。iCloud守护进程还负责同步文档的版本。因此,如果其他人从其他设备更新了同一文档的较新版本,您无需担心。这是您的docURL或
NSURL *ubiquityUrl = [fm URLForUbiquityContainerIdentifier:nil];
您无法直接访问iCloud。您可以访问启用iCloud的等效本地位置(ubiquityUrl)。如果您尝试获取的文件尚未在本地下载,则本地iCloud守护进程将在您访问时下载该文件。一旦发生这种情况,它将本地存储在您的设备中。所以下一次,您尝试使用docURL再次访问它,因为这会更快。iCloud守护进程还负责同步文档的版本。因此,如果其他人从另一台设备更新了同一文档的较新版本,您无需担心。
运行元数据查询以了解应用程序的iCloud文档时,查询结果是文档文件的占位符项(NSMetadataItem
objects)。这些项包含有关文件的元数据,例如其URL和修改日期。文档文件不在iCloud容器目录中
在发生以下情况之一之前,不会下载文档的实际数据:
- 应用程序尝试打开或访问该文件,例如通过调用
openWithCompletionHandler:
- 应用程序调用
方法NSFileManager
,显式下载数据startdownloadingbiquitousitemature:error:
NSMetadataItem
objects)。这些项包含有关文件的元数据,例如其URL和修改日期。文档文件不在iCloud容器目录中
在发生以下情况之一之前,不会下载文档的实际数据:
- 应用程序尝试打开或访问该文件,例如通过调用
openWithCompletionHandler:
- 应用程序调用
方法NSFileManager
,显式下载数据startdownloadingbiquitousitemature:error: