XCGLogger:对成员' log'的模糊引用

时间:2016-04-28 19:16:33

标签: swift xcglogger

尝试设置XCGLogger并收到错误:

  

对成员' log'

的模糊引用

我发现此问题已经raised,但我对解决方案并不清楚..

根据安装指南,将此全局常量添加到AppDelegate.swift:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    let log = XCGLogger.defaultInstance()

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        log.setup(.Debug, showThreadName: true, showLogLevel: true, showFileNames: true, showLineNumbers: true, writeToFile: nil, fileLogLevel: .Debug)  
        return true
    }

然后在各个源文件中:

import XCGLogger
log.debug("A debug message")

适当的用法是什么?

2 个答案:

答案 0 :(得分:4)

问题很简单。如果在log内声明AppDelegate,则表示您正在创建实例变量。要访问它,您必须以实例变量的形式访问它:

(UIApplication.sharedApplication().delegate as! AppDelegate).log.debug("test")

如果您希望在任何地方都可以访问log,则必须将其设为全局常量:

  

在AppDelegate中,向默认的XCGLogger实例声明一个全局常量

let log = XCGLogger.defaultInstance()

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

(无需在AppDelegate文件中声明它,您基本可以将其放在代码中的任何位置)

或将其static

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    static let log = XCGLogger()

并使用以下方式访问它:

AppDelegate.log.debug(...)

为了解释这个暧昧的引用,有一个名为log的数学函数,log文件中还有一个malloc.h函数。由于您传递String作为第一个参数,并且两个函数都不匹配,编译器会警告您它不知道您要使用哪两个函数。

答案 1 :(得分:0)

另外我想最好创建全局常量文件并创建这样的东西(如果你已经声明登录typeof(MyClass)):

AppDelegate

然后简单地使用let LOG = (UIApplication.sharedApplication().delegate as! AppDelegate).log