Я создаю приложение для управления записью в событии с помощью Swift 3. Я использую Firebase для хранения CSV-файлов моего клиента. Эти CSV-файлы представляют собой базу данных всех участников события.Как разобрать CSV-файл, загруженный из Firebase Storage Swift 3
Пример строк в моем файле 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 Tutorials: 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?) –