- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在试用 XCGLogger 并注意到,如果我有一个日志语句,其中包含来自同时实现 CustomDebugStringConvertible 和 CustomStringConvertible 的类的对象实例,则记录器不会调用 debugDescription 属性,但似乎只会从 CustomStringConvertible 调用 description 属性.
我的 debugDescription 实现包含有关我希望在日志记录中使用的描述属性的附加信息。
在这种情况下,当两种协议(protocol)都实现时,它们是让记录器默认使用 debugDescription 而不是描述的一种方法吗?
如果仅实现了 CustomStringConvertible 或 CustomDebugStringConvertible 中的一个,记录器是否会检测到这一点并使用已实现的协议(protocol)?
谢谢
最佳答案
使用 CustomStringConvertible
或 CustomDebugStringConvertible
是在字符串到达 XCGLogger
之前发生的事情.字符串插值将使用 description
CustomStringConvertible
的属性(property)而不是 debugDescription
CustomDebugStringConvertible
的属性(property). debugDescription
仅在符合 CustomDebugStringConvertible
的对象时使用传递给 debugPrint()
方法方向,不在引号内。
例如:
struct Sample: CustomStringConvertible, CustomDebugStringConvertible {
var description: String { return "description" }
var debugDescription: String { return "debugDescription" }
}
let sample = Sample()
print("\(sample)") // description
debugPrint("\(sample)") // "description"
print(sample) // description
debugPrint(sample) // debugDescription
一个可能的解决方案是添加 -DDEBUG
给你的Other Swift Flags
(如果还没有的话),并改变你的 description
属性是这样的:
var description: String {
#if DEBUG
return debugDescription
#else
return "description"
#endif
}
然后对于调试版本,您将获得 debugDescription
字符串插值中使用的值,但在您的生产构建中,您将获得正常的 description
.
关于swift - XCGLogger 如何与同时实现 CustomStringConvertible 和 CustomDebugStringConvertible 的类进行交互?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35481272/
Github 自述文件提到了在调试中使用颜色的可能性。尽管配置了 XcodeColors 插件,但还需要什么才能在那里获得彩色输出? 最佳答案 使用: log.xcodeColorsEnabled =
我正在考虑使用 XCGLogger 来替换 CocoaLumberjack,并且想知道是否允许使用根据自述文件在主线程上创建和设置的全局记录器从任何线程记录以下内容? log.info("This i
我想在我正在编写的 Swift 框架中使用 XCGLogger。包含此框架的应用程序可能也可能不使用 XCGLogger。 处理这种情况的最佳方法是什么?我会使用依赖注入(inject)之类的东西让应
我想为我的所有日志添加前缀。我尝试子类化 XCGLogger 来覆盖 logln(...) 或 debug(...) 函数。 但是我在使用这个时遇到两个困难 编译器总是给我错误(见图)。 我不知道
如何在生产环境中完全禁用来自 XCGLogger 的日志? 目前我正在使用logLevel = .None。 这是推荐的方式吗? 最佳答案 这是一种可能的方式,但并不理想。 首先,我想知道您是否真的想
我正在使用具有正确兼容性的 XCGLogger(我的 Swift 语言是 3.2,XCGLogger 版本是 5.0.5) 但应用程序仍然崩溃,并显示以下崩溃报告 8 XCGLogger 0x1059
我在我的 iOS 项目中使用 SQLite.swift 库。 现在我按照文档中的建议使用 db.trace(println) 记录 SQLite 语句,但我想将 XCGLogger 库与 log.in
警告:cocoapods 的新手...我有一个快速的 xcode 项目,我正在尝试使用 XCGLogger pod,但是在将它添加到 podfile 之后(使用 use_frameworks!),po
我正在比较 CleanRoomLogger https://github.com/emaloney/CleanroomLogger与 XCGLogger https://github.com/Dave
尝试设置 XCGLogger 并收到错误: Ambiguous reference to member 'log' 我看到这个问题已经是raised但我不清楚解决方案.. 根据安装指南将这个全局常量添
我正在尝试使用 xcode7.4 beta 使用 cocoapods 安装 XCGLogger Swift 2.0。 这是我的 pod 文件。 platform :ios, '8.0' use_fra
我正在试用 XCGLogger 并注意到,如果我有一个日志语句,其中包含来自同时实现 CustomDebugStringConvertible 和 CustomStringConvertible 的类
我想使用 XCGLogger 3.0 在用 Swift 2 编写的 iOS9 应用程序中进行日志记录。在 AppDelegate 中,我定义 let log = XCGLogger.defaultIn
我有一个混合 Xcode 项目。我的 appDelegate 是用 Objective-C 编写的,我的 Controller 部分是用 Swift 编写的。是否可以在该项目中使用 XCGLogger
我是一名优秀的程序员,十分优秀!