2012-01-03 2 views
2
나는 문제가 간단한 TEXTFILE을 맞추지을 데

, 나는이 오류가 iCloud에 (나쁜 파일 기술자)와 간단한 텍스트 파일을 동기화 할 수 없습니다/모바일 문서/4C224W52W5 ~ COM ~ piso13 ~ opusDomini/currentLogPath, NSUnderlyingError = 0xde9b460그것을 열려고 할 때

이 내가 그것을

-(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]; 

} 

이것은 만드는 방법이다} "작업. 잘못된 파일 디스크립터를 완료 할 couldn,Äôt" 내가 읽은 방법 :

-(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를 사용하고 있습니다. 알림 쿼리 결과가 긍정적으로 수집됩니다.

도움 말?

+0

'filePath' 메소드에서'iCloudPath' 변수에 어떤 값을 할당할까요? –

+0

또한 읽거나 쓸 때 그 오류가 발생합니까? –

+0

iCloudPath는/private/var/mobile/Library/Mobile Documents/4C224W52W5 ~ com ~ piso13 ~ opusDomini –

답변

5

파일이 다운로드되지 않았습니다. 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를 시작할 수도 있습니다. 필자의 경우 한 줄짜리 텍스트 파일 일뿐입니다.

관련 문제