【发布时间】:2023-04-01 05:37:01
【问题描述】:
这可能是一个非常简单的答案。我对 Swift 还很陌生,刚刚接触 AWS。我只是想将一个 JSON 文件下载到 Swift 中的字符串 var 中,以便我可以解析等。我找不到一个好的示例(除了显示如何下载图像的重复示例)。
我已经看到完成处理程序访问数据的图像示例,即UIImage(data: data!)!,但我找不到文本文件的等价物。
我知道我是通过凭据和配置进入的,而且这一切都是正确的。 我只是无法从结果中哄骗文本数据。这是我认为应该返回我想要的东西的 sn-p。我只需要知道它在哪里...
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 - 完全符合我的预期。所以,我试过 String(data: data) 得到错误:“参数标签'(data:)'不匹配任何可用的重载”。是否有关于为什么需要编码为 UTF-8 的简要说明)?非常感谢...
-
那么您需要指定使用哪种字符串编码方法来创建数据。通常是 utf8,但也可以是任何 (utf8, ascii, isoLatin1, isoLatin2, ...) developer.apple.com/documentation/swift/string/encoding
-
是的,这对我来说非常有意义,因为它正在工作并且我有更多的时间来理解。谢谢。
-
顺便说一句,最好将其保存为数据,创建符合 Decodable 的自定义结构并使用 JSONDecoder 解码您的 json 数据。
-
谢谢,我当然可以将其视为更清洁的解决方案。
标签: swift amazon-web-services amazon-s3 download completion