Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从应用程序访问iCloud驱动器文件_Ios_Objective C_Icloud Drive - Fatal编程技术网

Ios 从应用程序访问iCloud驱动器文件

Ios 从应用程序访问iCloud驱动器文件,ios,objective-c,icloud-drive,Ios,Objective C,Icloud Drive,我想在我的应用程序中提供iCloud支持,以便存储和获取PDF文件。 我的问题是“如何在不使用UIDocumentPickerViewController的情况下访问iCloud驱动器文件”。实际上,我想在我的应用程序中有自定义文件列表 我试过这个密码 - (void) getAllFilesIniCloud { queryData = [[NSMetadataQuery alloc] init]; [queryData setSearchScopes:[NSArray arra

我想在我的应用程序中提供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或web的iCloud中,那个么我的应用程序也应该能够访问该文件

我也有同样的问题,请在iCloud上通过此线程进行澄清

无法获取文件列表并进行自定义查看..,如果要显示文件列表,需要使用UIDocumentPickerViewController…或者可以使用NSUBiquitousKeyValueStore。此链接需要Xamarin登录。