【发布时间】:2015-11-21 06:41:48
【问题描述】:
我刚开始使用 Swift 2.0 编写脚本,但遇到了符号正在解决的问题。
使用 Carthage 我从包含的 Cartfile 引导
github "emaloney/CleanroomLogger"
我可以通过以下方式让 CleanroomLogger 在 Playground 内工作:
- 在 XCode 7.1.1 中创建一个工作区
- 从
./Carthage/Checkouts/CleanroomLogger添加 CleanroomLogger.xcodeproj 文件 - 在项目中新建 Playground
在操场内输入密码
import CleanroomLogger
var logConfig = DefaultLogConfiguration.init(minimumSeverity: LogSeverity.Debug, synchronousMode: true)
Log.enable(logConfig)
Log.debug?.message("Sample message sent to debug")
Log.debug?.value("Sample value sent to debug")
这播放没有错误。我只看到() 作为预期的每个Log.debug? 调用旁边的操场上的输出。如果我打开控制台应用程序,我会看到两个条目:
11/20/15 10:33:51.455 PM Cleanroom Logger[70056]: DEBUG | <EXPR>:5 — Sample message sent to debug
11/20/15 10:33:51.455 PM Cleanroom Logger[70056]: DEBUG | <EXPR>:6 — <String: "Sample value sent to debug">
很明显,此时我已经检查出 CleanroomLogger 并正确构建。
我继续尝试使用与我的 Cartfile 位于同一目录中的脚本 logger-demo.swift 中的 Cleanroom Logger。此脚本与 Playground 代码相同,只是在开头添加了 shebang
#!/usr/bin/env swift -F Carthage/Build/Mac
import CleanroomLogger
var logConfig = DefaultLogConfiguration.init(minimumSeverity: LogSeverity.Debug, synchronousMode: true)
Log.enable(logConfig)
Log.debug?.message("Hello from inside my Mac")
Log.debug?.value("This is a test of value")
运行脚本会产生以下输出:
$ ./logger-demo.swift
LLVM ERROR: Program used external function '__TMdV15CleanroomLogger23DefaultLogConfiguration' which could not be resolved!
为什么这会在操场上解决,而不是在 swift 脚本中解决?
【问题讨论】:
标签: swift logging swift2 swift-playground