swift - 在 Swift 5 中从 AWS S3 下载文本文件

标签 swift amazon-web-services amazon-s3 download completion

这可能是一个非常简单的答案。我对 Swift 相当陌生,刚刚接触 AWS。我只是想将 JSON 文件下载到 Swift 中的字符串 var 中,以便我可以解析等。我找不到一个好的示例(除了显示如何下载图像的重复示例)。

我看过图像示例,其中完成处理程序访问数据,即 UIImage(data: data!)! 但我找不到文本文件的等效项。

我知道我是通过凭据和配置进入的,而且一切都是正确的。 我只是无法从结果中提取出文本数据。这是我认为应该返回我想要的内容的片段。我只需要知道它在哪里...

func getJSON() {

    let S3BucketName: String = "mybucket"
    let S3DownloadKeyName: String = "myfile.txt"

    let expression = AWSS3TransferUtilityDownloadExpression()
    expression.progressBlock = {(task, progress) in DispatchQueue.main.async(execute: {
        print("Downloading...")
    })
    }

    let transferUtility = AWSS3TransferUtility.default()
    transferUtility.downloadData(fromBucket: S3BucketName, key: S3DownloadKeyName, expression: expression) { (task, URL, data, error) in
            if error != nil {
                print(error!)
                return
            }
            DispatchQueue.main.async(execute: {
                print("Got here")
                // I would expect to find data in an attribute here
            })
    }
}

我认为实际的字符串可以从完成处理程序中的“数据”值中得到,但我只是不确定如何到达它或它存在于什么属性中。我很确定我做了详尽的搜索一个我能理解的类似例子,但没有找到任何东西。

非常感谢任何帮助。

最佳答案

添加此答案是因为@Larme 的评论消失了。很简单,返回的数据需要进行编码。这有效:

    let transferUtility = AWSS3TransferUtility.default()
    transferUtility.downloadData(fromBucket: S3BucketName, key: S3DownloadKeyName, expression: expression) { (task, URL, data, error) in
            if error != nil {
                print(error!)
            }
            DispatchQueue.main.async(execute: {
                print("Got here")
                self.rawJSON = (String(data: data!, encoding: .utf8))!
                print(self.rawJSON)
            })
    }

关于swift - 在 Swift 5 中从 AWS S3 下载文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55400311/

相关文章:

node.js - 将文件从 url 上传到 s3 存储桶

ios - 从 swift 类返回到上一个 Controller

ios - 如何从 Firebase 身份验证登录的 NSError 中获取错误消息

amazon-web-services - 通过 Spark DataFrame 读取 S3 文件时,Glue 书签不起作用

python - 如何从 Jenkins 将 Python 应用程序部署到 Amazon Elastic Beanstalk?

java - 使用java从aws lambda中的/tmp目录写入然后读取文件

java - 每周处理 S3 中的所有文件

ios - 显示部分标题 UICollectionReusableView

ios - SwiftUI 列表颜色背景

android - Amazon Cognito Auth 库导致 gradle IOException(重复的 zip 条目)