2

XCGLogger をセットアップしようとすると、エラーが発生します:

メンバー '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")

正しい使い方とは?

4

2 に答える 2

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

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

于 2016-04-28T20:17:39.730 に答える