【问题标题】:How do i get a text files content with swift and the dropbox API如何使用 swift 和 Dropbox API 获取文本文件内容
【发布时间】:2017-11-06 06:16:26
【问题描述】:

我正在尝试从我已与令牌链接的 Dropbox 帐户下载常规 .txt 文件,但我不知道如何获取内容。 我唯一能找到的是:

            // Download a file
            client.filesDownload(path: "/hello.txt").response { response, error in
                if let (metadata, data) = response {
                    println("Dowloaded file name: \(metadata.name)")
                    println("Downloaded file data: \(data)")
                } else {
                    println(error!)
                }

它只给了我一堆关于文件的信息,而不是它的内容。

【问题讨论】:

  • 我什至没有filesDownload方法o.O和client.files.download(path:...)一样吗?在这种情况下,您的 data 变量应该包含文件的内容。
  • @Alex 数据变量包含我的文件大小
  • 哦,我明白了问题所在。数据类型为Data,只有print才显示大小。您必须通过以下方式将其转换为字符串:if let fileContents = String(data: data, encoding: .utf8) { print(fileContents) }
  • 将文件下载到设备后,您需要使用 FileManager 类对其进行处理。请参阅此答案以帮助入门:How do you read data from a text file in Swift 3 (XCode 8)

标签: swift dropbox-api swiftydropbox


【解决方案1】:

它打印文件大小的原因是您的data 变量是Data 类型。要打印实际内容,您必须先将其转换为 String

if let fileContents = String(data: data, encoding: .utf8) {
    print("Downloaded file data: \(fileContents)")
}

斯威夫特 1

根据您使用的 println,您可能使用的是旧版本的 Swift。在这种情况下,代码应如下所示:

if let fileContents = NSString(data: data, encoding: NSUTF8StringEncoding) {
    println("Downloaded file data: \(fileContents)")
}

Data 类型的好处是可以直接转换,例如 JSON:

guard let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any] else {
    return
}
//... do something with json ...

【讨论】:

  • 很高兴能帮上忙!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多