Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

New Line Command (\n) Not Working With Firebase Firestore Database Strings

I'm making an app with Swift and I'm using Firebase Firestore. Firestore is a database that has some strings that I put into a UILabel. With some of my strings, I am using the new line command (or \n). So some of my strings look like this:

"This is line one\nThis is line two\nThis is line three"

But, whenever that string is retrieved, it's addetoto the UILabel and appears like this...

This is line one\nThis is line two\nThis is line three

...when it should be like this...

This is line one

This is line two

This is line three

I'm assuming that \n does not work with strings coming from a database? I've tried double escaping with \\n. Does anyone have a fix for this?

Here is the code that I am using...

    database.collection("songs").whereField("storyTitle", isEqualTo: "This is the story header").getDocuments { (snapshot, error) in
        
        for document in (snapshot?.documents)! {
            self.storyBodyLabel.text = (document.data()["storyBody"] as? String)!
   }
}
like image 406
Jacob Cavin Avatar asked Feb 12 '18 21:02

Jacob Cavin


3 Answers

I got it. I simply just replaced the character "\n" from the string that I was receiving with the newline command.

label.text = stringRecived.replacingOccurrences(of: "\n", with: "\n")

Because I manually typed out my string and gave Firebase a string like "Line one\nline two\nline three" I am replacing "\n" with "\n" But if you give Firebase a string like

"Line one
Line two
Line three"

Firebase replaces those returns with "\\n" therfore making the code

label.text = stringRecived.replacingOccurrences(of: "\\n", with: "\n")

Hope that helps!

like image 116
Jacob Cavin Avatar answered Nov 07 '22 18:11

Jacob Cavin


You can use CSS whitespace property for \n, it works for me.

white-space: pre-line;
like image 2
Phương Nguyễn Avatar answered Nov 07 '22 19:11

Phương Nguyễn


Firestore doesn't support any escape sequences within string values. If you write "\n" in a string, you're going to get exactly that back when you read it. If you need to store something special, you may want to encode and decode that yourself.

like image 1
Doug Stevenson Avatar answered Nov 07 '22 20:11

Doug Stevenson