gpt4 book ai didi

swift - 创建框架和对成员 'log' 的模糊引用

转载 作者:行者123 更新时间:2023-11-28 12:32:14 24 4
gpt4 key购买 nike

我花了很多时间尝试将我的代码转换为 Cocoapod/Framework。

所以我有一些代码想打包到一个框架 (F) 中,然后在 App (A) 中使用它。它几乎可以正常工作,但是,当我尝试构建 A(链接 F)时,A 中的源引用 F 中的日志,我收到错误

对成员“log”的引用不明确

这是因为日志是在我的 F 源文件中定义的一个名为 Logging.swift 的文件,看起来像这样:

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) 我如何摆脱这个错误?我猜它与指定哪个模块记录这个有关,因为还有其他模块也有日志。 ( Darwin 、CoreGraphics 等)

ii) 如何设置我的日志记录,以便在框架 F 代码中记录的任何内容也可以包含在 App A 的同一个记录器中?这甚至可能或必要吗?

最佳答案

我相信我现在可以回答我自己的问题了:

我将框架的 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
}()
}

然后它有一个默认的记录器。我使用 Log.main 引用对日志的调用

在我的应用程序 A 中,我可以定义自己的记录器,然后分配它:

Log.main = myOtherLog

关于swift - 创建框架和对成员 'log' 的模糊引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41830344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com