从 UserDefaults 加载后 Swift 换行符不起作用

问题描述 投票:0回答:1

我正在从 UserDefaults 加载一个字符串,并将 TextView 的文本设置为该字符串。当它包含换行符时,它只会在 TextView 中显示换行符,而不是实际的换行符。

我在 UserDefaults 中保存了一个简短的个人简介,并希望能够包含一个换行符(例如:“我的名字 25 岁”)。我通过 textField 设置这个 bio,这就是为什么我想使用换行符。当我在 textView 中显示该值时,它显示换行符并且不执行实际换行符。

两个代码示例:

textView.text = "My Name\n25 Years Old"

这样设置文本时,换行符正常工作,textView显示: 我的名字 25岁

let text = UserDefaults.standard.string(forKey: "text")
textView.text = text

像这样设置文本时,换行符不起作用,textView 显示: 我的名字 25岁

有谁知道为什么会这样以及可能的解决方法吗?

swift line-breaks userdefaults
1个回答
0
投票

我找到了一个适用于 UserDefaults 的解决方案。我们可以要求用户在 textField 中输入文本时使用类似“/n/”的内容来指示换行符,然后我们可以将字符串保存到 UserDefaults。然后,当从 UserDefaults 加载字符串以显示在 textView 中时,我们可以用“/n/”字符分隔它,并将 textView 文本设置为子字符串,中间有实际的换行符。

例如:

保存文本(使用 /n/ 换行):

let text = textField.text
UserDefaults.standard.set(text, forKey: "text")

保存在 UserDefaults 中的文本可能类似于“我的第一个文本 /n/ 我的第二个文本 /n/ 我的第三个文本”

加载文本:

let text = UserDefaults.standard.string(forKey: "text")
let textArray = text.components(separatedBy: "/n/")
var string = ""
for i in textArray {
            string.append("\(i)\n")
        }
textView.text = string

无论用户输入多少换行符,这都会起作用。

© www.soinside.com 2019 - 2024. All rights reserved.