问题描述
我正在尝试在快速项目中使用LogglyLogger-CocoaLumberjack。
我在xCode中遇到此错误。
Enum case 'verbose' has no associated values
我无法解决这个问题。
我实际上是试图在Swift 5中转换Objective-C代码。这是我的Swift函数
在appDelegate.swift类中
func initLoggly(){
// static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
let ddLogLevel:DDLogLevel = .verbose
// LogglyLogger *logglyLogger = [[LogglyLogger alloc] init];
let logglyLogger = LogglyLogger()
// [logglyLogger setLogFormatter:[[LogglyFormatter alloc] init]];
logglyLogger.logFormatter = LogglyFormatter()
// logglyLogger.logglyKey = @"your-loggly-api-key";
logglyLogger.logglyKey = "XXXXXXXXXXXX-XXXXXX"
//
// // Set posting interval every 15 seconds,just for testing this out,but the default value of 600 seconds is better in apps
// // that normally don't access the network very often. When the user suspends the app,the logs will always be posted.
// logglyLogger.saveInterval = 15;
logglyLogger.saveInterval = 15
// [DDLog addLogger:logglyLogger];
DDLog.add(logglyLogger)
// // Do some logging
// DDLogVerbose(@"{\"myJsonKey\":\"some verbose json value\"}");
// ddLogLevel.verbose("{\"initloggly\":\"some verbose json value\"}") // also tried this,error ==> Enum case 'verbose' cannot be used as an instance member
DDLogLevel.verbose("{\"initloggly\":\"some verbose json value\"}") // Here is the error on this line
}
请指出我做错了!
解决方法
该库主要基于无法从Swift进行访问的C预处理器宏。
您可能需要在Objective-C中编写一小组使用这些宏的包装函数,这些包装函数又可以从Swift中调用。
这是一个看起来像这样的例子:
LogglyWrapper.h:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface LogglyWrapper : NSObject
+(void) logVerbose:(NSString*) msg;
@end
NS_ASSUME_NONNULL_END
和LogglyWrapper.m:
#import "LogglyWrapper.h"
#import <LogglyLogger.h>
@implementation LogglyWrapper
static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
+(void) logVerbose:(NSString*) msg {
DDLogVerbose(@"%@",msg);
}
@end
Swift的用法:
LogglyWrapper.logVerbose("foo")