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
相关产品推荐
相关产品推荐

