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

SwiftUI中使用SwiftyMarkdown遇文件加载错误,如何解决?

解决SwiftyMarkdown加载文件时的Fatal Error问题

1. 修复致命错误的执行逻辑

你的代码中fatalError("Error loading file")写在if let语句外部,无论文件是否加载成功,都会触发这个致命错误。必须将其移至else分支,仅在加载失败时执行:

if let url = Bundle.main.url(forResource: "README", withExtension: "md"), let md = SwiftyMarkdown(url: url) {
    // 原有的Markdown样式配置代码...
    self.textView.attributedText = md.attributedString()
} else {
    fatalError("Error loading file")
}

2. 初始化UITextView并添加到视图

当前代码仅声明了textView但未初始化,直接赋值attributedText会导致崩溃。需要在viewDidLoad中先创建并配置textView:

override func viewDidLoad() {
    super.viewDidLoad()
    
    // 初始化textView并设置布局
    textView = UITextView(frame: view.bounds)
    textView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    textView.isEditable = false
    view.addSubview(textView)
    
    // 后续的文件加载与样式配置逻辑...
}

3. 确认README.md文件的项目配置

确保README.md文件正确添加到项目中:

  • 检查文件是否显示在项目导航栏内
  • 选中文件,查看右侧File Inspector,确认Target Membership已勾选主应用target
  • 确认文件名拼写完全匹配(区分大小写,如README.md与readme.md视为不同文件)

4. 可选:添加日志辅助排查

若仍加载失败,可在else分支添加日志,定位具体问题:

else {
    let fileExists = Bundle.main.url(forResource: "README", withExtension: "md") != nil
    print("README.md是否存在于Bundle:\(fileExists)")
    fatalError("Error loading file")
}

内容的提问来源于stack exchange,提问作者Alex Gu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:22:40