在iCloud集成中发出警告

我正在尝试整合iCloud。

一切工作正常,但是当我尝试从iCloud读取文件时,我得到一个警告像:

Foundation called mkdir("/var/mobile/Library/Mobile Documents/.ubd/peer-E8A60A8F-FB9D-8721-F47C-hdffgdfg-v23/ftr/(A Document Being Saved By XYZ)"), it didn't return 0, and errno was set to 1. 

我的代码来获取数据:

 for (NSMetadataItem *item in results) { NSString *filename = [item valueForAttribute:NSMetadataItemDisplayNameKey]; NSURL *url = [item valueForAttribute:NSMetadataItemURLKey]; MyDocument *doc = [[MyDocument alloc] initWithFileURL:url]; [doc openWithCompletionHandler:^(BOOL success) { if (success) { NSData *file = [NSData dataWithContentsOfURL:url]; NSString *docDir = [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0] stringByAppendingPathComponent:@"Import/iCloud"]; if (![[NSFileManager defaultManager] fileExistsAtPath:docDir]) [[NSFileManager defaultManager] createDirectoryAtPath:docDir withIntermediateDirectories:YES attributes:nil error:nil]; NSString *pdfFile = [docDir stringByAppendingPathComponent:filename]; if(![[NSFileManager defaultManager] fileExistsAtPath:pdfFile]) [[NSFileManager defaultManager] createFileAtPath:pdfFile contents:file attributes:nil]; NSLog(@"Successfully loaded data from cloud file name %@", filename); } else { NSLog(@"Failed to load data"); } }]; } } 

它看起来像在iCloud中有一个部分编写的文件(基于错误中由XYZ保存的文档 ),并且您的元数据查询已将其返回给您,因为它也匹配文件名。 几周前我遇到了类似的情况,并通过使用文件的确切path来解决它,如下所示:

 NSString *filepath = [containerURL.path stringByAppendingPathComponent:@"MyFileName"]; NSPredicate *pred = [NSPredicate predicateWithFormat: @"%K == %@", NSMetadataItemPathKey, filepath]; [query setPredicate:pred];