2012-09-26 2 views
1

파일을 iCloud와 동기화하도록 빠른 테스트를 시도하고 있습니다. 이것은 내가 가지고있는 간단한 코드 조각입니다 :UIDocument 사용 saveToUrl이 NSURL에서 NSInvalidArgumentException을 발생시킵니다.

url = [[ubiquityContainerURL 
     URLByAppendingPathComponent: @"Documents"] 
     URLByAppendingPathComponent:@"test.txt"]; 

doc = [[CloudDocument alloc] initWithFileURL:url]; 

[doc saveToURL:[doc fileURL] 
    forSaveOperation:UIDocumentSaveForCreating 
    completionHandler:^(BOOL success) { 
    }]; 

지금은 주위를 둘러 보면 시도한 및 기타 튜토리얼이 그들이 그것을 할 방법이있을 것으로 보인다. ,

'NSInvalidArgumentException'이유 : 문제는 코드가 실행될 때,이 예외가 ([문서의 saveToURL]의 라인에서) 던져 도착이다 '* - [NSURL URLByAppendingPathExtension :] : 구성 요소, 구성 요소 또는 pathExtension을 사용할 수 없습니다. '

이 논리를 실행하는 방법

은 바로 여기에 편재의 URL을 가져 오는 한 후 호출됩니다 :

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
ubiquityContainerURL = [[NSFileManager defaultManager] URLForUbiquityContainerIdentifier:nil]; 

if (ubiquityContainerURL != nil) 
    [self writeAllBytesToLocalFile:@""]; 
}); 

나는 그것을 해결하기 위해 몇 가지 다른 일을 시도했지만 그것은 일어나고 유지합니다. 문제가 뭔지 알 겠어?

감사합니다.

답변

1

좋아요. 그래서 문제가 무엇인지 알았습니다. UIDocument 인스턴스 은 파일 확장자를 initialize 메서드의 마지막 경로에 추가하려고했습니다.

불행하게도 나는 덮어했던 - (있는 NSString) savingFileType이 때문에 파일 경로에 전무는 NSString 객체를 추가하려고 초기화 방법에 전무 문자열을 반환 만든 잘못된 방법으로 내 UIDocument 서브 클래스에서 방법을 .

그래서 다른 사람들이이 문제에 부딪 어떤 경우에, 당신은 그게 문제 :

+0

'savingFileType'를 오버라이드 (override)하는 올바른 방법은 무엇입니까가 해결되는지 확인하기 위해 사용자 정의 덮어 쓰기 방법을 제거하려고 할 수 있습니까? – adib

관련 문제