Swift Package Manager添加DGCharts依赖后导入报错问题排查
问题描述
我创建了一个Swift Package Manager包,需要添加第三方包Charts。已在Package.swift文件中添加该依赖,且该依赖已显示在包依赖列表中,但尝试使用时出现No such module 'DGCharts'错误。
相关代码
Package.swift 文件
// swift-tools-version: 5.7 // The swift-tools-version declares the minimum version of Swift required to build this package. import PackageDescription let package = Package( name: "XYZFramework", platforms: [ .iOS(.v15) ], products: [ .library( name: "XYZFramework", targets: ["XYZFramework"]), ], dependencies: [ .package(url: "https://github.com/danielgindi/Charts.git", .upToNextMajor(from: "5.0.0")) ], targets: [ .target( name: "XYZFramework", dependencies: [] /*, resources: [Resource.process("XYZFramework/Sources/XYZFramework/Resources/XYZFramework.xcassets")]*/), .testTarget( name: "XYZFrameworkTests", dependencies: ["XYZFramework"]), ] )
SwiftUI 视图代码
import SwiftUI import DGCharts struct SwiftUIView: View { let chartView = PieChartView() var body: some View { Text("Hello, World!") } } #Preview { SwiftUIView() }
问题原因与解决方法
核心原因
你仅在Package的全局依赖列表中声明了Charts包,但未将该包的具体产品关联到需要使用它的XYZFramework目标模块。SPM要求明确指定每个目标依赖的外部包产品,否则编译器无法定位对应模块。
解决步骤
修改
Package.swift中的目标依赖
在target的dependencies数组中添加Charts包的DGCharts产品,修改后的代码片段如下:.target( name: "XYZFramework", dependencies: [ .product(name: "DGCharts", package: "Charts") ] /*, resources: [Resource.process("XYZFramework/Sources/XYZFramework/Resources/XYZFramework.xcassets")]*/),清理缓存并重新构建
- 在Xcode中按下
Command + Shift + K清理项目构建缓存 - 关闭Xcode并删除DerivedData目录(默认路径为
~/Library/Developer/Xcode/DerivedData) - 重新打开项目并执行构建操作
- 在Xcode中按下
内容的提问来源于stack exchange,提问作者iosdev1111
相关产品推荐
相关产品推荐

