Xcode 10.1打开Xcode13项目报错No such 'SwiftUI' module,如何修复?
解决Xcode10.1中"No such 'SwiftUI' module"报错的方案
问题根源
Xcode 10.1(对应macOS Mojave 10.14)不支持SwiftUI框架——SwiftUI是从Xcode 11(搭配macOS Catalina 10.15/iOS 13)才正式引入的,旧环境下直接加载含SwiftUI的项目必然触发该报错。
可行修复方案
方案一:升级系统与Xcode
这是最省心的解决方式:将macOS升级到Catalina 10.15或更高版本,安装Xcode 11及以上版本(建议匹配项目原始的Xcode 13),原生支持SwiftUI后,项目可正常编译运行。方案二:移除项目中的SwiftUI依赖
如果必须在Xcode 10.1环境下运行,需要彻底清理SwiftUI相关代码:- 删除所有
import SwiftUI导入语句 - 将SwiftUI视图(如
struct XXX: View)替换为macOS原生AppKit组件(如NSViewController、NSView) - 移除Info.plist中SwiftUI相关的配置项
- 替换SwiftUI特有的语法(如
@State、var body: some View)为AppKit的状态管理方式
- 删除所有
方案三:通过条件编译适配双环境
若需要项目同时兼容新旧环境,可通过条件编译区分代码逻辑:#if canImport(SwiftUI) import SwiftUI struct ContentView: View { var body: some View { Text("Hello World") } } #else import AppKit class ContentViewController: NSViewController { override func loadView() { let view = NSView() view.wantsLayer = true view.layer?.backgroundColor = NSColor.white.cgColor let label = NSTextField(labelWithString: "Hello World") label.frame = CGRect(x: 50, y: 50, width: 200, height: 30) view.addSubview(label) self.view = view } } #endif注:Xcode 10.1的Swift版本为4.2,不支持编译器版本检查,仅通过
canImport(SwiftUI)判断即可,确保旧环境下只会编译AppKit相关代码。
内容的提问来源于stack exchange,提问作者Ldev
相关产品推荐
相关产品推荐

