从文件夹解析JSON文件 - NSTemporaryDirectory

时间:2016-01-19 16:14:41

标签: json swift parsing

我使用以下代码将文件从AWS S3下载到我的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;

file = .json文件 应用程序内容全部保存在JSON文件中,因此我需要从NSTemporaryDirectory重定向文件,以便内容显示在应用程序上。

是否有人知道解析函数以便将我的JSON文件中的数据加载到应用程序中?

谢谢

3 个答案:

答案 0 :(得分:0)

您无法修改主捆绑包,因此无法使用。

您可以控制几个目录,例如主目录,应用程序支持目录,缓存目录或可能的文档目录。

答案 1 :(得分:0)

正如gnasher729所说,你无法修改主要包本身,但没有理由在这里。您无需移动文件即可显示该文件。您可以从临时目录中读取。它位于您的应用程序沙箱中,并没有什么特别之处(它甚至不能为您清理,所以如果您需要,那么这是您的责任。)< / p>

临时目录未备份,因此如果您需要,则应将其移至文档目录。如果您想这样做,请参阅NSFileManager moveItemAtPath:toPath:error:(或者首先下载到您的文档目录中)。

答案 2 :(得分: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)


}

使用AlamoFire和SwiftyJSON创建一个将通过临时目录解析JSON文件的函数:

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 {
    }

}

这将在运行时显示应用程序上的文本。 我想让图像现在做点什么。