You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 23:19:57