Swift从UserDefaults加载含换行符字符串后TextView换行失效问题求助
问题原因与解决方法
原因
你从UserDefaults读取的字符串里,所谓的"换行符"其实是字面量的\n(即两个独立字符:反斜杠\和字母n),而非真正的ASCII换行字符(转义后的\n)。这通常是因为:
- 保存到UserDefaults时,输入的是手动敲入的
\n字符组合,而非按下回车键生成的真实换行; - 保存前的字符串处理逻辑错误,把真实换行符转成了字面量的
\\n。
解决方法
方法1:保存时确保存入真实换行符
如果是通过TextField输入内容,优先让用户直接按回车键输入换行。如果需要支持手动输入\n来表示换行,保存前先做替换处理:
// 假设textField是输入内容的文本框 let inputText = textField.text ?? "" // 将字面量的"\\n"替换为真实换行符"\n" let processedText = inputText.replacingOccurrences(of: "\\n", with: "\n") UserDefaults.standard.set(processedText, forKey: "text")
方法2:读取时转换字面量换行符
如果已经保存了带字面量\\n的字符串,读取后再做替换:
if let savedText = UserDefaults.standard.string(forKey: "text") { let displayText = savedText.replacingOccurrences(of: "\\n", with: "\n") textView.text = displayText }
内容的提问来源于stack exchange,提问作者Yoshua Kaempf
相关产品推荐
相关产品推荐

