2016-10-25 2 views
0

Firebase 저장소에서 단어 문서를 다운로드하려고합니다. 시뮬레이터에서 모든 것이 예상대로 작동합니다. 그러나 내 장치에서, 나는 다음과 같은 오류 얻을 : 나는 나에게 작업 대답을하지 않는 것보고 된Firebase 저장소 파일 다운로드 장치 문제

Optional(Error Domain=FIRStorageErrorDomain Code=-13000 "An unknown error occurred, please check the server response." UserInfo={object=26 October 2016.docx, bucket=app.appspot.com, NSLocalizedDescription=An unknown error occurred, please check the server response., ResponseErrorDomain=NSCocoaErrorDomain, NSFilePath=/tmp/bulletin, NSUnderlyingError=0x1702590b0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}, ResponseErrorCode=513})

다른 게시물을, 그리고 내가 아는 모든도, 파일 사용 권한에 문제가 있다는 것입니다 나는 권장 디렉토리 (tmp)를 사용하고 있지만.

이 파일

let Ref_Bulletin = Bulletin.referenceForURL("gs:/app.appspot.com/Bulletin/\(Today.stringFromDate(NSDate())).docx") 

    // Create local filesystem URL 
    let localURL: NSURL! = NSURL(string: "file:///tmp/today.docx") 


     // Download to the local filesystem 
     let downloadTask = Ref_Bulletin.writeToFile(localURL) { (URL, error) -> Void in 
      if (error != nil) { 
       print(error.debugDescription) 
       // Uh-oh, an error occurred! 
      } else { 
       print("Working As Expected") 
       self.Web_View.loadRequest(NSURLRequest(URL: localURL)) 
      } 

는 그래서이 문제를 일으키는 내가 그것을 어떻게 해결합니까를 다운로드하는 코드는?

는 업데이트 :

그래서 나는 디렉토리를 만들려고하지만 난 문서 내가 tmp에 쓸 수 있다고하더라도 권한이없는 것을 이야기하고 있어요.

Unable to create directory Error Domain=NSCocoaErrorDomain Code=513 "You don’t have permission to save the file “today.docx” in the folder “h”." UserInfo={NSFilePath=/tmp/h/today.docx, NSUnderlyingError=0x1702498a0 {Error Domain=NSPOSIXErrorDomain Code=1 "Operation not permitted"}}

디렉토리 생성하기위한 코드입니다 : 나는 문제가 여기에 tmpDocuments 디렉토리가 실제로하지 않는 예를 들어 /tmp/Documents (에 살고 있다고 가정

do { 
     try NSFileManager.defaultManager().createDirectoryAtPath(localURL.path!, withIntermediateDirectories: true, attributes: nil) 
    } catch let error as NSError { 
     NSLog("Unable to create directory \(error.debugDescription)") 
    } 
+0

[Firebase store : 로컬 파일에 저장하려고하면 오류가 발생합니다] (http://stackoverflow.com/questions/37792882/firebase-store-trying-to-store-to-local-file-gives) -an-error) –

+0

iOS 문제 인 것처럼 보입니다. https://forums.developer.apple.com/thread/19844 –

+0

@MikeMcDonald하지만 제가 연결 한 대답은 tmp에 쓸 수 있다고 말했고, 문제. –

답변

3

을, 그것을 /Documents이 실제로 /User/Documents 인 것처럼 보이며, 실제로는 /private/var/mobile/Documents입니다 (https://www.theiphonewiki.com/wiki/ 참조).

이 시스템이 해당 디렉토리 문자열이 아닌,있는 생각 어디 기반으로 파일 URL을 생성하고 있는지 확인하려면 :

NSURL *tmpDirURL = [NSURL fileURLWithPath:NSTemporaryDirectory()]; 
NSURL *fileURL = [[tmpDirURL URLByAppendingPathComponent:@"my_file"] URLByAppendingPathExtension:@"txt"]; 

또는 NSDocumentDirectory 비슷한

을. 시뮬레이터에서 작동하는 이유는 다음과 같습니다. 시뮬레이터에서의 샌드 박싱이 실제 장치와 같은 방식으로 작동하지 않으며 /tmp이 분명히 쓸 수있는 유효한 위치이기 때문입니다 (비록 사용자가 원하는 것 같지는 않지만 당신이 실제 장치에서 그것을하려고 할 때 iOS가 hissy 적합을 던지는 것에 의해 증명되는 2를 쓰는 것).

+0

감사합니다. Mike, 이제 작동합니다. 그러나, 나는 이것이 다른 질문에서 언급되었다고 생각하지 않는다. –