[英]Accessing iCloud Drive files from app
我想在我的应用程序中获得iCloud支持,我可以在其中存储和获取PDF文件。 我的问题是“如何在不使用UIDocumentPickerViewController
情况下访问iCloud驱动器文件”。 实际上,我想在我的应用程序中包含自定义文件列表。
我尝试了这段代码
- (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中的应用程序目录运行正常。 但是,如果用户将文件存储在Mac上的iCloud中或通过Web存储,则我的应用程序还应该启用访问此文件的权限。
我遇到了同样的问题,请在iCloud上通过此线程进行澄清https://forums.xamarin.com/discussion/comment/283726#Comment_283726
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.