gpt4 book ai didi

ios - 如何解析从 Firebase Storage Swift 3 下载的 CSV 文件

转载 作者:可可西里 更新时间:2023-11-01 01:25:17 24 4
gpt4 key购买 nike

我正在使用 Swift 3 创建一个应用程序来管理事件中的条目。我正在使用 Firebase 来存储我的客户端的 CSV 文件。这些 CSV 文件代表一个事件的所有参与者的数据库。

我的 CSV 文件中存储在 Firebase 存储中的行示例:

id;event;lastname;firstname;phone;email;address;zipcode;city;added_in_event;comment;checked;checked_date;created;created_uid
479;NULL;CHARLANES;Herve;Google;NULL;NULL;NULL;NULL;NULL;NULL;1;24/11/2016 11:43;NULL;NULL
480;NULL;CHARLANES;Eve;Google;NULL;NULL;NULL;NULL;NULL;NULL;1;24/11/2016 13:21;NULL;NULL[...]

Firebase 网站为您提供教程,让您了解如何使用 Firebase 存储来存储图像以及如何从我们的应用程序下载该图像。这很简单,您只需要使用引用 gsReference.data(withMaxSize: 1 * 1024 * 1024) { data, error in [...] 并存储类型为“数据”的结果UIImage 中的 NSData,工作完成。

Firebase 教程链接:https://firebase.google.com/docs/storage/ios/download-files

但是今天,我想下载 CSV 文件而不是图像。正如 Firebase 教程所说,NSData 类型的“数据”中的结果是我刚下载的 CSV。我想读取文件的内容并将所有行存储到选项卡 [] 中。但是,当我打印“数据”时,我唯一可以获得的信息是本例中 CSV 文件的正确大小“1796 字节”,而不是我的 CSV 内容。

所以我正在尝试从“数据”对 NSData 进行编码,但它也不起作用...

你们有什么建议给我吗?

这是我的函数的一个例子:

  func downloadMyCSV(){
//Firebase Storage Reference
let storage = FIRStorage.storage()
//location of my CSV file in Firebase Storage Reference
let gsReference = storage.reference(forURL: "gs://xxxx-xxxx.appspot.com/USERS_BDD_CSV/XXXxq5qur9XQOqAOoAeWH9F5AXo2/Tab-User-Trial.csv")

//Firebase function for download a file with a reference
gsReference.data(withMaxSize: 1 * 1024 * 1024) { data, error in
if let error = error {
//Sh*t happen
print(error.localizedDescription)
} else {
print(data)//print : "1796 bytes" the exacte size of my CSV file stored in firebase storage

if data != nil {//Me trying to encode
do {
let dataString = String(data: data!, encoding: .utf8)
let s = try String(contentsOf: url!, encoding : .utf8)
print("my data : \(dataString)")
print(s)
}catch let error as NSError{
print(error)
}
}
}
}
}

最佳答案

你问的实际上与 Firebase 无关。您只想解析代表 CSV 文件的 Data/NSData。从 Firebase 存储下载数据与其格式无关,因为它只是存储原始数据。

CSV 文件只是逗号分隔或分号分隔的纯文本,因此请将下载的数据视为 String

这里要记住一些事情:

无论您使用(d) 什么方法将 CSV 文件上传到 Firebase 存储,请确保稍后使用其字符编码来解码下载的数据。这就是您如何获得 Swift String(在 Swift 3 中)的 UTF8 数据表示

let data = "myCSVString".data(using: .utf8)

解析传入的 CSV 数据:

正如您在示例中所做的那样,将数据解码回字符串:

let dataString = String(data: data!, encoding: .utf8)    // this is only valid if you used UTF8 to encode it

为了处理方便,像这样获取 CSV 中所有字符串的数组:

let csvStrings = dataString.components(separatedBy: ";")
// this can also be...
let moreGenericCSVStrings = dataString.components(separatedBy: [",", ";"]) // to handle comma separated CSV

如果您想要一种较少手动的方式来执行此操作,则无需重新发明轮子。

一些 CSV 解析器:

使用其中之一可以让您获得一些有用的方法的优势,并且能够将内容拆分为更多组件(行、标题等...),这比我提供的示例。

关于ios - 如何解析从 Firebase Storage Swift 3 下载的 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41841292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com