2016-01-19 94 views
0

我有使用此代碼從AWS S3下載到我的NSTemporaryDirectory文件:解析JSON文件 - NSTemporaryDirectory

let downloadFilePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("FILENAME") 
    let downloadingFileURL = NSURL(fileURLWithPath:downloadFilePath) 
    let downloadRequest: AWSS3TransferManagerDownloadRequest = AWSS3TransferManagerDownloadRequest(); 
    downloadRequest.bucket = "Bucketname"; 
    downloadRequest.key = "FileName"; 
    downloadRequest.downloadingFileURL = downloadingFileURL; 

文件=以.json文件 的應用內容都保存在JSON文件,因此我需要重定向NSTemporaryDirectory中的文件以使內容出現在應用程序中。

有誰知道解析函數爲了從我的JSON文件加載數據到應用程序?

謝謝

+0

您不需要將文件移動到主包來顯示它。我不知道它是什麼類型的文件,但是您應該能夠將文件的路徑提供給您想要用來使用該文件的任何系統。 – EmilioPelaez

+0

這是一個.json文件 – Kumar

回答

0

你不能修改主包,所以這是行不通的。

您可以控制幾個目錄,例如主目錄,應用程序支持目錄,緩存目錄或可能的文檔目錄。

+0

好吧,我真的很抱歉,但我不明白你在說什麼?我可以使用什麼方法來顯示內容? – Kumar

+1

@Kumar你在這裏所說的「顯示」,你認爲如果你移動文件會發生什麼? –

+0

當我點擊運行模擬器,我想要在模擬器上顯示的文件? – Kumar

0

正如gnasher729所說,你不能修改主包本身,但是沒有理由在這裏。您不需要移動文件以顯示它。您可以從您的臨時目錄中讀取。它位於應用程序沙箱內部,沒有什麼特別之處(它甚至不會爲您清理乾淨,所以如果您需要,這是您的責任)。

臨時目錄沒有備份,所以如果你想要的話,你應該把它移到你的文檔目錄。如果您想要這樣做(或者首先下載到您的文檔目錄中),請參閱NSFileManager moveItemAtPath:toPath:error:

+0

好的,謝謝你,我會研究這個。 我有點困惑,但我會想辦法 – Kumar

0

我想通了。

所以下載文件後:

let downloadFilePath = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("FILENAME") 
let downloadingFileURL = NSURL(fileURLWithPath:downloadFilePath) 
let downloadRequest: AWSS3TransferManagerDownloadRequest = AWSS3TransferManagerDownloadRequest(); 
downloadRequest.bucket = "Bucketname"; 
downloadRequest.key = "FileName"; 
downloadRequest.downloadingFileURL = downloadingFileURL; 

我必須提交下載請求 - 如下所示:

 // submit download request 
    let transferManager: AWSS3TransferManager = AWSS3TransferManager.defaultS3TransferManager(); 
    print("Downloading started, please wait..."); 

    transferManager.download(downloadRequest).continueWithExecutor(AWSExecutor.defaultExecutor(), block: { (task) -> AnyObject? in 
     print("TASK:::::: \(task)"); 
      if (task.error != nil){ 
       print("Error Downloading"); 
      }else{ 
       self.readFile() 
       print("Download complete"); 
      } 

     return nil; 
     }, cancellationToken: nil) 


} 

創建將通過臨時目錄解析您的JSON文件的功能,使用AlamoFire和SwiftyJSON:

func readFile() { 
    // JSON parsing step (from temporary directory) 
    let path = (NSTemporaryDirectory() as NSString).stringByAppendingPathComponent("FILENAME") 
    do { 
     let readFile:NSString? = try NSString(contentsOfFile: path, encoding: NSUTF8StringEncoding) 
     let json = JSON.parse(readFile as String!) 
     for (_, subJson) in json["FILECONTENT"] { 
      let version = subJson["FILECONTENT"].string 
      let newsletter = Edition(Version: version!) 
      self.editions.append(ARRAYNAME!) 
     } 
     dispatch_async(dispatch_get_main_queue()) { 
      self.tableView.reloadData() 
     } 
     //print(readFile) 
    } catch { 
    } 

} 

這將展示您的應用上的文字運行時提示。 我正試圖讓圖像去做一些事情。