加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

你如何在Swift中使用Lumberjack登录?

发布时间:2020-12-14 04:25:22 所属栏目:百科 来源:网络整理
导读:我正在将使用Lumberjack Logging的Objective-C文件转换为 Swift.它似乎主要是工作,除了我声明ddloglevel的部分. Objective-C方法: #ifdef DEBUGstatic const int ddLogLevel = LOG_LEVEL_INFO;#elsestatic const int ddLogLevel = LOG_LEVEL_VERBOSE;#endif
我正在将使用Lumberjack Logging的Objective-C文件转换为 Swift.它似乎主要是工作,除了我声明ddloglevel的部分.

Objective-C方法:

#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_INFO;
#else
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#endif

Swift方式:

#if DEBUG
let ddLogLevel = LOG_LEVEL_INFO;
#else
let ddLogLevel = LOG_LEVEL_VERBOSE;
#endif

除了我这个编译时错误:使用未解析的标识符’LOG_LEVEL_INFO’

为什么会这样?我该如何解决?

解决方法

查看库源,LOG_LEVEL_INFO和LOG_LEVEL_VERBOSE是#define宏,Swift不会自动导入.斯威夫特只看到了const.

但是,我认为你的方法作为一个整体可能没有意义 – 看起来你正在尝试为全局Objective-C常量ddLogLevel分配一个值. Swift’s let不会为你做那件事 – 它是一个完全不同的命名空间.这是在Swift中无法使用Objective-C宏的基础之上.

最好的办法是在项目中保留一个Objective-C文件(比如说,LoggingConfig.m只包含:

#import "DDLog.h"

#ifdef DEBUG
static const int ddLogLevel = LOG_LEVEL_INFO;
#else
static const int ddLogLevel = LOG_LEVEL_VERBOSE;
#endif

您使用的库在很大程度上依赖于Objective-C功能,因此最好只使用Objective-C进行配置.

编辑:更详细地查看这个库(之前我从未听说过),在Swift中使用CocoaLumberjack可能不会有用,因为它的主要API是一个名为DDLog的预处理器宏.我不认为这是一个很好的匹配.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读