Я уже давно использую XCGLogger, но после преобразования моего приложения в swift 3.0 у меня возникли проблемы с ним в моей тестовой цели.
У меня есть следующее как часть моего файла класса AppDelegate. Это создает глобальную переменную log
, которую я могу использовать в любом месте своего приложения, просто вызвав, например, log?.info("foo")
.
До перехода на swift 3 это работало и в тестовой цели, но теперь я получаю ошибку ссылки, если пытаюсь использовать log?.info("foo")
в своей тестовой цели.
Код делегата приложения
import XCGLogger
// USE_XCGLOGGER is set for debug but not for release
#if USE_XCGLOGGER
let log: XCGLogger? = {
// Setup XCGLogger
let log = XCGLogger.default
return log
}()
#else
let log: XCGLogger? = nil
#endif
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
...
}
Класс в тестовой цели
import XCTest
@testable import OurLatitude
class ApiAccessTests: XCTestCase {
override func tearDown() {
super.tearDown()
log?.info("foo")
}
}
Ошибки ссылки
undefined symbols for architecture x86_64:
"XCGLogger.XCGLogger.(info (@autoclosure () -> Any?, functionName : Swift.StaticString, fileName : Swift.StaticString, lineNumber : Swift.Int, userInfo : [Swift.String : Any]) -> ()).(default argument 4)", referenced from:
OurLatitudeTests.ApiAccessTests.tearDown () -> () in ApiAccessTests.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)