0

我正在开发兼容 iCloud 的应用程序,并且正在研究如何检测文件是否正在上传/下载或已完成。我发现这可以通过 NSURL “键”来检测,例如NSURLUbiquitousItemIsDownloadingKeyNSURLUbiquitousItemIsUploadingKey。我还在努力学习编程,那么这些键是什么?我如何使用它们来检测文件的状态(我希望应用程序知道文件何时完成上传到 iCloud 或完成下载(无论设备在哪一侧))。

我读到我可以用它resourceValuesForKeys:error:来查询这些键的状态,所以我会把它放到一个 IF 语句中,看看结果是否符合预期,例如“是”或“否”?谢谢你的帮助。

if ([destination resourceValuesForKeys:[NSArray arrayWithObject:NSURLUbiquitousItemIsUploadingKey] error:NULL]) {

    //is uploading??

}
4

1 回答 1

2

您提出的代码看起来几乎可行,但有一件事:resourceValuesForKeys:error:返回一个字典,其键与您传入的常量相同,其值与这些键的文档中指定的值相同。在 的情况下NSURLUbiquitousItemIsUploadingKey,值是NSNumber包装BOOL值的实例。

所以......假设destinationNSURL指向您的无处不在容器中的一个项目:

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:更简洁一点。

于 2012-07-03T19:55:12.560 回答