2017-01-24 9 views
0

私のコードをCocoapod/Frameworkに変えようとしています。フレームワークを作成し、メンバー 'log'へのあいまいな参照

私は、フレームワーク(F)にパッケージし、それをApp(A)で使用したいコードをいくつか持っています。私はAで元がFからのログを参照(リンクF)を、構築しようとすると、それはほとんど、しかし、働いている、私はこれは、ログがで定義されているので、

Ambiguous reference to member 'log'

エラーを取得する私のLogging.swiftという名前のファイルにFのための情報源、そして次のようになります。

import Foundation 
import XCGLogger 

// MARK: - Logging 

let log: XCGLogger = { 
    let log = XCGLogger(identifier: "mainLogger", includeDefaultDestinations: false) 

    // Create a destination for the system console log (via NSLog) 
    let systemDestination = ConsoleDestination(identifier: log.identifier+".console") 

    // configure it here, omitted for brevity 

    // Add the destination to the logger 
    log.add(destination: systemDestination) 

    // Add basic app info, version info etc, to the start of the logs 
    log.logAppDetails() 

    return log 
}() 

私の質問は以下のとおりです。

i)はどのように私はこのエラーを取り除くのですか?私はそれには、ログを持っている他のモジュールがあるので、どのモジュールがこれをログしているかを指定することと関係があると推測しています。 (ダーウィン、CoreGraphicsなど)

ii)フレームワークFコードに記録されるものがApp Aの同じロガーに含まれるように、ロギングを設定するにはどうすればよいですか?それは可能なのか必要なのでしょうか?

答えて

2

私は今、自分の質問に答えることができると信じて:

私はフレームワークのLogging.swiftファイルを変更:そして、それはデフォルトのロガーを持って

public struct Log { 

    public static var main: XCGLogger = { 
     let log = XCGLogger(identifier: "mainLogger", includeDefaultDestinations: false) 

     // Create a destination for the system console log (via NSLog) 
     let systemDestination = ConsoleDestination(identifier: log.identifier+".console") 

     // Optionally set some configuration options (omitted for brevity) 

     // Add the destination to the logger 
     log.add(destination: systemDestination) 

     // Add basic app info, version info etc, to the start of the logs 
     log.logAppDetails() 

     return log 
    }() 
} 

。私は自分のアプリケーションAではLog.main

とログへの呼び出しを参照して、私は自分のロガーを定義し、それを割り当てることができます。

Log.main = myOtherLog

関連する問題