我正在研究iCloud兼容的应用程序,我正在研究如何检测文件是上传/下载还是已完成。 我发现可以使用NSURL“密钥”检测到这一点,例如NSURLUbiquitousItemIsDownloadingKey
或NSURLUbiquitousItemIsUploadingKey
。我还在努力学习编程,那么这些键是什么?如何使用它们来检测文件的状态(我希望应用程序知道文件何时完成上传到iCloud或完成下载(无论设备在哪一侧)。
我读到我可以使用resourceValuesForKeys:error:
来查询这些键的状态,所以我会将它放入IF语句并查看结果是否是预期的,例如“是”还是“否”?谢谢你的帮助。
if ([destination resourceValuesForKeys:[NSArray arrayWithObject:NSURLUbiquitousItemIsUploadingKey] error:NULL]) {
//is uploading??
}
答案 0 :(得分:1)
您提出的代码看起来几乎可行,但是一方面:resourceValuesForKeys:error:
返回一个字典,其字符与您传入的常量相同,其值与the documentation for those keys中指定的值相同。对于NSURLUbiquitousItemIsUploadingKey
,值为NSNumber
实例,其中包含BOOL
值。
所以......假设destination
是NSURL
指向您普遍存在的容器中的项目:
NSError *error;
NSArray *keys = [NSArray arrayWithObject:NSURLUbiquitousItemIsUploadingKey];
NSDictionary *values = [destination resourceValuesForKeys:keys error:&error];
if (values == nil)
NSLog(@"error: %@", error);
else if ([[values objectForKey:NSURLUbiquitousItemIsUploadingKey] boolValue])
NSLog(@"uploading");
else
NSLog(@"not uploading");
如果您只查询一个密钥,则可以使用getResourceValue:forKey:error:
更简洁。