2016-10-25 7 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"}}

これは、ディレクトリを作成するためのコードです:

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

私はここでの問題はtmpDocumentsディレクトリは、実際に、例えば(/tmp/Documentsでそれを住んでいないということであることを前提としてい/Documentsが実際には/User/Documentsであるように見えますが、実際には/private/var/mobile/Documentsです。https://www.theiphonewiki.com/wiki/を参照してください。

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

それともNSDocumentDirectoryについても同様:システムはこれらのディレクトリは、文字列ではなく、あると思っどこオフに基づいて、あなたのファイルのURLを作成していることを確認します。なぜシミュレータ上で動作するのか:これは、シミュレータ上のサンドボックスが実際のデバイスと同じように動作しないことと、/tmpがあなたが書き込みできる有効な場所であると思われるためですあなたが実際のデバイスでそれをやろうとするときに、iOSがひどいフィット感を放つことによって証明されるように、2つを書くこと)。

+0

ありがとうございます。しかし、私はこれが他の質問で言及されたとは思わない。 –

関連する問題