无法同步简单的文本文件与iCloud(坏文件描述符)

我无法同步简单的文本文件,试图打开时出现此错误:

{NSFilePath = / private / var / mobile / Library / Mobile Documents / 4C224W52W5〜com〜piso13〜opusDomini / currentLogPath,NSUnderlyingError = 0xde9b460“操作无法完成。错误的文件描述符”}

这是我创build它的方式

-(BOOL)createLogFolderFile{ NSString *uuid = nil; CFUUIDRef uuidRef = CFUUIDCreate(nil); uuid = (NSString*)CFUUIDCreateString(nil, uuidRef); CFRelease(uuidRef); NSError *error = nil; [uuid writeToFile:[self filePath] atomically:NO encoding:NSUTF8StringEncoding error:&error]; if (error) { NSLog(@"Error trying to create log file %@", error); return FALSE; } else{ return TRUE; } } -(NSString*)filePath{ NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *iCloudPath = [[fileManager URLForUbiquityContainerIdentifier:nil] path]; return [iCloudPath stringByAppendingPathComponent:LOG_FOLDER_FILE_NAME]; } 

我是这样读的:

 -(NSString*)readLogFolderFromFile{ NSError *error = nil; NSString *logFolder = [NSString stringWithContentsOfFile:[self filePath] encoding:NSUTF8StringEncoding error:&error]; if (error) { NSLog(@"Error when trying to read log folder from file: %@" ,error); return nil; } else{ return logFolder; } } 

我正在使用NSMetadataQuery来search文件,通知查询完成收集信息的结果是积极的。

帮帮我?

该文件未被下载。 看起来NSMetadataQuery通知云中文件的存在。 要实际获取文件,需要额外的代码:

里面的queryDidFinishGathering通知:

  NSMetadataItem *item = [query resultAtIndex:0]; self.metadataItem = item; BOOL isDownloaded = [[item valueForAttribute:NSMetadataUbiquitousItemIsDownloadedKey]boolValue]; if (!isDownloaded) { NSError *error = nil; [[NSFileManager defaultManager] startDownloadingUbiquitousItemAtURL: [item valueForAttribute:NSMetadataItemURLKey] error:&error]; NSLog(@"Start downloading file"); if (error) { NSLog(@"Error trying to download file: %@", error); } else{ [self lookForLogFolderFile]; return; } } 

lookForLogFolderFile只是再次启动查询。 几次通话后,我的物品被下载。 您也可以在每次调用之间使用一个计时器来启动一个NSMetadataQuery。 就我而言,只是一行文本文件。