AWS Amplify传入Swift的字符串Markdown无法正常显示问题
解决AWS Amplify传输后Swift Markdown换行不生效的问题
核心问题原因
AWS Amplify传输文本时,可能把换行符\n转义成了字符串形式的\\n(即反斜杠+n两个字符),而Swift的AttributedString(markdown:)只识别实际的换行符\n,导致原本的换行无法生效。本地JSON文件中的\n会被Swift的JSON解析器自动转换成实际换行符,所以本地测试时显示正常。
解决步骤
验证转义问题
打印Amplify返回的article.body,查看输出是否包含\\n而非\n,确认换行符是否被转义。手动还原换行符
对返回的字符串做替换处理,将\\n替换为实际的\n后再传入Markdown解析:
// 处理转义的换行符 let processedBody = article.body?.replacingOccurrences(of: "\\n", with: "\n") ?? "Body" // 安全解析Markdown(避免try!引发崩溃) var attributedContent = AttributedString("Body") do { attributedContent = try AttributedString(markdown: processedBody) } catch { print("Markdown解析失败: \(error)") } Text(attributedContent)
- 额外注意事项
- 不要使用
try!,若文本包含无效Markdown语法会直接崩溃,用do-catch处理更稳妥。 - 如果还有其他转义字符(比如
\\t制表符),可以按同样逻辑添加替换规则。
内容的提问来源于stack exchange,提问作者gavido
相关产品推荐
相关产品推荐

