编码UTF8返回nil Swift3

时间:2017-04-19 18:24:39

标签: ios swift firebase encoding utf-8

我正在尝试使用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: ";")
[...]
}
  • 数据和数据! = 1586ko字节,我的csv的正确大小。

我的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

错误:

My error 致命错误:在展开Optional值时意外发现nil (LLDB)

  • 让rawString = nil
  • 让rawLines = nil
  • 让count = nil

如果我的变量为零,那是因为我的csv中的“àéèäâ”,编码失败并返回nil,我猜。

顺便说一句,没有这个特殊字符,编码不会返回nil,我的应用程序运行得很好。

为什么utf8编码失败?

有人有任何建议吗?

0 个答案:

没有答案