[英]How to share image downloaded from firebase storage between different views?
[英]How to parse a CSV file downloaded from Firebase Storage Swift 3
我正在使用 Swift 3 創建一個應用程序來管理事件中的條目。我正在使用 Firebase 來存儲我客戶端的 CSV 文件。 這些 CSV 文件代表一個活動所有參與者的數據庫。
我的 CSV 文件中存儲在 Firebase Storage 中的行示例:
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 Storage 存儲圖像以及如何從我們的應用程序下載此圖像。 這很容易,您只需要使用您的參考gsReference.data(withMaxSize: 1 * 1024 * 1024) { data, error in [...]
並將NSData
類型的“data”的結果存儲在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)
}
}
}
}
}
您要問的實際上與 Firebase 無關。 您只想解析代表 CSV 文件的Data
/ NSData
。 從 Firebase 存儲下載數據與其格式無關,因為它只是存儲原始數據。
CSV 文件只不過是逗號分隔或分號分隔的純文本,因此將下載的數據視為String
。
這里要記住一些事情:
無論您使用什么方法 (d) 將 CSV 文件上傳到 Firebase Storage,請確保稍后使用其字符編碼對下載的數據進行解碼。 這就是你如何獲得 Swift String
的UTF8
數據表示(在 Swift 3 中)
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 解析器:
使用其中之一可以讓您擁有一些有用的方法,並且能夠將內容拆分為更多組件(行、標題等),這需要比我提供的示例多一點的工作.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.