我查看了Apple的iCloud编程指南,我似乎无法弄清楚如何实际下载文件并获得一些进度反馈,文档太模糊了.我知道我应该对NSMetadataItems做一些事情,但实际上没有太多解释如何获得并使用它.
有人可以向我解释一下吗?
附:有没有比我更高的代表的人用UIdocumentPicker和iCloudDrive标记这篇文章?
解决方法 据我所知,您只能使用以下方式检索进度反馈Ubiquitous Item Downloading Status Constants只提供3种状态:
> NSURLUbiquitousItemDownloadingStatusCurrent
> NSURLUbiquitousItemDownloadingStatusDownloaded
> NSURLUbiquitousItemDownloadingStatusNotDownloaded
所以你不能有量化的进度反馈,只有部分也可以下载.
为此,您需要准备并启动NSMetadataQuery,添加一些观察者并使用NSURLUbiquitousItemDownloadingStatusKey键检查NSMetadataItem的下载状态.
self.query = [NSMetadataquery new];self.query.searchScopes = @[ NSMetadataqueryUbiquitousdocumentsScope ];self.query.predicate = [nspredicate predicateWithFormat:@"%K like '*.yourextension'",NSMetadataItemFSnameKey];[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(queryDIDUpdate:) name:NSMetadataqueryDIDUpdateNotification object:nil];[[NSNotificationCenter defaultCenter] addobserver:self selector:@selector(queryDIDFinishGathering:) name:NSMetadataqueryDIDFinishGatheringNotification object:nil];[self.query startquery];
然后,
- (voID)queryDIDUpdate:(NSNotification *)notification{ [self.query disableupdates]; for (NSMetadataItem *item in [self.query results]) { NSURL *url = [item valueForAttribute:NSMetadataItemURLKey]; NSError *error = nil; Nsstring *downloadingStatus = nil; if ([url getResourceValue:&downloadingStatus forKey:NSURLUbiquitousItemDownloadingStatusKey error:&error] == YES) { if ([downloadingStatus isEqualToString:NSURLUbiquitousItemDownloadingStatusNotDownloaded] == YES) { // Download } // etc. } } [self.query enableupdates];}@H_502_45@ 总结
以上是内存溢出为你收集整理的objective-c – 如何告诉iOS从iCloud Drive下载文件并获得进度反馈全部内容,希望文章能够帮你解决objective-c – 如何告诉iOS从iCloud Drive下载文件并获得进度反馈所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)