我正在尝试创建一个外部swift库,其中包含可以在其他项目中调用的功能。我遵循了在Swift中创建库的基本步骤
我跑了
swift package init
我的package.swift看起来像
import PackageDescription
let package = Package(
name: "TestProject",
products: [
// Products define the executables and libraries produced by a package, and make them visible to other packages.
.library(
name: "TestProject",
targets: ["TestProject"]),
],
dependencies: [
// Dependencies declare other packages that this package depends on.
// .package(url: /* package url */, from: "1.0.0"),
],
targets: [
// Targets are the basic building blocks of a package. A target can define a module or a test suite.
// Targets can depend on other targets in this package, and on products in packages which this package depends on.
.target(
name: "TestProject",
dependencies: []),
.testTarget(
name: "TestProject",
dependencies: ["TestProject"]),
]
)
并运行swift package generate-xcodeproj
进行项目。
然后将项目上传到Github,并使用Swift Package Manager将其加载到另一个项目中。它加载得很好。
我创建了一个简单的SwiftUI项目来测试我的库。在库中,我添加了功能
func test() -> String{
return("This was good!")
}
,然后在项目中的ContentView.swift文件中,在导入语句(正确构建)中添加了import TestProject
,并尝试通过设置将test()
默认设置为Text("Hello World")
,以查看其是否有效。
系统提示我错误,指出未定义Text(test())
使用未解决的标识符“ test”
我不确定在导入库方面我出了什么问题,而尝试研究这一点时发现却很少。
我的TestProject.swift文件位于“ / Sources / TestProject /”中,是通过init上的swift生成的
test()
我的contentView.swift文件
struct SwiftSciduct {
var text = "Hello, World!"
}
func test() -> String{
return("This was good!")
}
有点茫然为什么在主项目中无法使用此功能。
答案 0 :(得分:1)
您无法访问test()
,因为它默认为internal
访问级别。您需要将其标记为public
或open
才能使其他模块看到它。