Swift 来自外部库的函数未导入
Swift function from external library not importing
我正在尝试创建一个外部 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 包管理器将其加载到不同的项目中。它加载得很好。
我创建了一个简单的 SwiftUI 项目来测试我的库。在库中,我添加了函数
func test() -> String{
return("This was good!")
}
然后在项目中,在我的 ContentView.swift 文件中,我在导入语句中添加了 import TestProject
(确实正确构建)并尝试通过设置在文件中调用 test()
将默认值 Text("Hello World")
更改为 Text(test())
以查看是否有效。
我收到一条错误提示,指出 test()
未定义
Use of unresolved identifier 'test'
就导入我的库而言,我不确定我哪里出错了,而且在尝试研究这个问题时我发现的很少。
我的 TestProject.swift 文件位于 `/Sources/TestProject/' 中,由 swift 在 init
上生成
struct SwiftSciduct {
var text = "Hello, World!"
}
func test() -> String{
return("This was good!")
}
我的contentView.swift文件
import SwiftUI
import TestProject
struct ContentView: View {
var body: some View {
Text(test())
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
有点不知所措为什么这个功能在主项目中不可用。
您无法访问 test()
,因为它已默认为 internal
访问级别。您需要将其标记为 public
或 open
以便其他模块可以看到它。
我正在尝试创建一个外部 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 包管理器将其加载到不同的项目中。它加载得很好。
我创建了一个简单的 SwiftUI 项目来测试我的库。在库中,我添加了函数
func test() -> String{
return("This was good!")
}
然后在项目中,在我的 ContentView.swift 文件中,我在导入语句中添加了 import TestProject
(确实正确构建)并尝试通过设置在文件中调用 test()
将默认值 Text("Hello World")
更改为 Text(test())
以查看是否有效。
我收到一条错误提示,指出 test()
未定义
Use of unresolved identifier 'test'
就导入我的库而言,我不确定我哪里出错了,而且在尝试研究这个问题时我发现的很少。
我的 TestProject.swift 文件位于 `/Sources/TestProject/' 中,由 swift 在 init
上生成struct SwiftSciduct {
var text = "Hello, World!"
}
func test() -> String{
return("This was good!")
}
我的contentView.swift文件
import SwiftUI
import TestProject
struct ContentView: View {
var body: some View {
Text(test())
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
有点不知所措为什么这个功能在主项目中不可用。
您无法访问 test()
,因为它已默认为 internal
访问级别。您需要将其标记为 public
或 open
以便其他模块可以看到它。