我正在尝试使用Firebase下载包含«àéèäâ»等字符的csv文件。 如您所见,我正在使用Swift3编码功能:
字符串(字节:数据!,编码:.utf8)
在我的代码中:
func downloadMyCSVWithDLURL(csvName: String, modeType: Bool, modeSync: Bool){
let realm = try! Realm()
//Firebase Storage Reference
let storage = FIRStorage.storage()
//Firebase Path to my csv file
if (FIRAuth.auth()?.currentUser?.uid) != nil {
let userID = FIRAuth.auth()?.currentUser?.uid
let downloadRef = storage.reference(forURL: "\(REF_USERS_CSV_FOLDER)").child("USERS_BDD_CSV/\(userID!)/\(csvName).csv")
//Download csv file in "data" as NSData
downloadRef.data(withMaxSize: 1000000, completion: { (data, err) in
//Encoding
let rawString = String(bytes: data!, encoding: .utf8)
let rawLines = rawString?.components(separatedBy: ["\n"])
let count = rawLines?.count
var tableParticipant = [Participant]()
for i in 1...count! {
let datas = rawLines![i].components(separatedBy: ";")
[...]
}
我的CSV示例:
id;lastname;firstname;phoneNBR;mail;qrCode;address;cp;city;company;plusOne;entryType;eventName;isCheck;liveInscr;dateInscr;dateCheck
424ad79a;DOE;Johnàéèäâ;22222222222;doe@john.com;QRcode;14 George Street;2000;Sydney;COMPANY;;VIP;XXX;false;false;null;null
错误:
致命错误:在展开Optional值时意外发现nil (LLDB)
如果我的变量为零,那是因为我的csv中的“àéèäâ”,编码失败并返回nil,我猜。
顺便说一句,没有这个特殊字符,编码不会返回nil,我的应用程序运行得很好。
为什么utf8编码失败?
有人有任何建议吗?