2016-04-28 4 views
2

がXCGLoggerを設定しようとするとエラー受け「ログイン」:..私はこの問題はすでにraisedだったが、私は解決策を明確にないんだけど見XCGLogger:メンバーへのあいまいな参照が

Ambiguous reference to member 'log'

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") 

適切な使い方は何ですか?

+0

コードを入れますか?それはAppDelegateクラスかグローバルか? – ryantxr

+0

'nameOfYourProject.log.debug'?しかし、おそらく 'log'を別のものに改名する方が良いでしょう。衝突する識別子 'log'を見つけることができましたか? – Sulthan

+0

@ryantxr:更新された質問 –

答えて

4

問題はかなり単純です。 logAppDelegateの中に宣言すると、インスタンス変数が作成されます。それにアクセスするには、インスタンス変数としてアクセスする必要があります:

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

あなたはlogはどこでもアクセスできるようにしたい場合は、あなたがそれをグローバル一定にする必要があります。

In your AppDelegate, declare a global constant to the default XCGLogger instance.

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(...) 

をambigious参照を説明するために、logと呼ばれる数学関数があり、log機能はmalloc.hファイルでもあります。最初のパラメータとしてStringを渡しているため、2つの関数のどちらも一致しないため、コンパイラはどちらの関数を使用したいのか分からないことを警告します。

+0

ありがとうございました。それはNOOBの問題でした.. –

+1

同じ問題が解決しました!ありがとう! – Shinichi

0

また、私は(あなたがAppDelegateでログを宣言した場合)、それはグローバル定数ファイルを作成することをお勧めだと思うし、このようなものを作成します。

let LOG = (UIApplication.sharedApplication().delegate as! AppDelegate).log 

とAppDelegateであなたをした後、簡単な使用LOG.error("error")

関連する問題