我使用vapor来构建项目。使用xcode创建一个swift文件。
像这样的结构:├── Sources
│ └──App
│ │ └── Controllers
│ │ └── Models
│ │ │ └── File.swift
│ └──Run
│ └── main.swift
└── Package.swift
使用main.swift
let config = try Config()
try config.setup()
let drop = try Droplet(config)
try drop.setup()
File.test()
try drop.run()
使用File.swift
class File {
class func test() -> Void{
print("--\(self)--");
}
}
上面的代码xcode可以正常运行。但是使用命令swift build
来获取错误。
日志:
Compile Swift Module 'App' (6 sources)
Compile Swift Module 'Run' (1 sources)
/Users/xxx/Documents/testServer/Sources/Run/main.swift:25:1: error: use of
unresolved identifier 'File'
File.test()
^~~~
CoreServices.cFile:1:12: note: did you mean 'cFile'?
public var cFile: OSType { get }
^
<unknown>:0: error: build had 1 command failures
error: exit(1): /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift-build-tool -f /Users/xxx/Documents/testServer/.build/debug.yamlhere
答案 0 :(得分:3)
您的main.swift
位于模块Run
中,而File
位于模块App
中。要从另一个模块调用类的方法,您必须执行以下操作:
File
)public
test
)public
import App
添加到main.swift
答案 1 :(得分:0)
可能发生的情况是,您的班级File
位于目标“应用”中,而您的Main
位于目标“运行”中,因此无法看到另一个。
您需要做的是将File.test()
行添加到Droplet+setup.swift
个setup()
文件中,该文件可能位于“应用”目标上的项目中。
有些事情是这样的:
@_exported import Vapor
extension Droplet {
public func setup() throws {
try setupRoutes()
// ADD YOUR CLASS CALL OVER HERE
File.test()
}
}