【问题标题】:Parsing JSON file from folder - NSTemporaryDirectory从文件夹解析 JSON 文件 - NSTemporaryDirectory
【发布时间】:2016-01-19 16:14:41
【问题描述】:

我使用以下代码从 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;

文件 = .json 文件 应用程序内容都保存在 JSON 文件中,因此我需要从 NSTemporaryDirectory 重定向文件,以便内容出现在应用程序上。

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

谢谢

【问题讨论】:

  • 您无需将文件移动到主包即可显示它。我不知道它是什么类型的文件,但是您应该能够将文件的路径提供给您想要使用该文件的任何系统。

标签: json swift parsing


【解决方案1】:

您无法修改主捆绑包,因此这不起作用。

您可以控制一些目录,例如主目录、应用程序支持目录、缓存目录,或者可能是文档目录。

【讨论】:

  • 好吧,我真的很抱歉,但我不明白你在说什么?我可以使用哪些方法来显示内容?
  • @Kumar 你认为如果移动文件会发生的“显示”是什么意思?
  • 当我点击模拟器运行时,我希望文件显示在模拟器上?
  • “显示”是什么意思?在您的应用程序中?显示在文本字段中?主页上的快捷方式(请不要)
  • 不可以,因为文件是.json文件,里面有文章,所以模拟器运行时会显示应用内的文章
【解决方案2】:

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

临时目录没有备份,所以如果你需要,你应该把它移动到你的文档目录。如果您想这样做,请参阅NSFileManager moveItemAtPath:toPath:error:(或者首先下载到您的文档目录)。

【讨论】:

  • 好的,谢谢,我会调查的。我有点困惑,但我会弄清楚的
【解决方案3】:

我想通了。

所以下载文件后:

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 通过 temp 目录解析 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 {
    }

}

这将在运行时展示您的应用程序上的文本。 我现在正在尝试让图像做某事。

【讨论】:

    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 2016-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多