从应用程序访问iCloud Drive文件
我想在我的应用程序中可以存储和获取PDF文件的iCloud支持。 我的问题是“如何访问iCloud驱动器文件,而不使用UIDocumentPickerViewController
”。 其实我想在我的应用程序中有自定义文件列表。
我试过这个代码
- (void) getAllFilesIniCloud { queryData = [[NSMetadataQuery alloc] init]; [queryData setSearchScopes:[NSArray arrayWithObject:NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope]]; NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K like '*.'", NSMetadataItemFSNameKey]; [queryData setPredicate:pred]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(queryDidFinishGathering:) name:NSMetadataQueryDidFinishGatheringNotification object:queryData]; [queryData startQuery]; } - (void)queryDidFinishGathering:(NSNotification *)notification { NSMetadataQuery *pQuery = [notification object]; [pQuery disableUpdates]; [pQuery stopQuery]; [pFilesArray removeAllObjects]; for (NSMetadataItem *item in [query results]) { NSURL *url = [item valueForAttribute:NSMetadataItemURLKey]; NSString * name = url.lastPathComponent; if ([[name pathExtension] isEqualToString:@"pdf"] || [[name pathExtension] isEqualToString:@"PDF"]) { NSString *fileName = [url.absoluteString lastPathComponent]; if (url && ![pFilesArray containsObject:fileName]) { [pFilesArray addObject:fileName]; } } } [[NSNotificationCenter defaultCenter] removeObserver:self name:NSMetadataQueryDidFinishGatheringNotification object:pQuery]; queryData = nil; [pTableView reloadData]; }
也试过了范围
NSMetadataQueryUbiquitousDataScope NSMetadataQueryUbiquitousDocumentsScope NSMetadataQueryAccessibleUbiquitousExternalDocumentsScope
我知道这个代码在iCloud的app目录下工作的很好。 但是,如果用户在Mac或通过networking在iCloud中存储文件,那么我的应用程序也应该启用访问此文件。
我有同样的问题,请通过此线程澄清iCloud https://forums.xamarin.com/discussion/comment/283726#Comment_283726