【发布时间】:2017-06-10 00:36:37
【问题描述】:
我正在使用 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 [...] 并将NSData 类型的“数据”的结果存储在UIImage 中即可完成。
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)
}
}
}
}
}
【问题讨论】:
-
你能发布你得到的(
dataString的值)吗? 1)这似乎不是 Firebase 问题,2)很可能是字符编码问题(也许您存储的值不是 UTF8 兼容字符?)
标签: ios swift parsing firebase firebase-storage