这可能是一个非常简单的答案。我对 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/