代码之家  ›  专栏  ›  技术社区  ›  zumzum

Swift:OSLog `对枚举的实例方法'appendInterpolation'`的调用中没有完全匹配?

  •  0
  • zumzum  · 技术社区  · 1 年前

    我有以下测试代码:

    import OSLog
    
    enum MyEnum {
        case testing
    }
    
    extension Logger {
        
        static let testLog = Logger(subsystem: "my sub", category: "testCat")
        
    }
    
    func testLog() {
        let me = MyEnum.testing
        
        let someDate = Date()
        
    //    Logger.testLog.info("testing log 1 \(me)") // << No exact matches in call to instance method 'appendInterpolation'
        Logger.testLog.info("testing log 1 \(someDate)") // << WORKS
        
    }
    

    当我运行 testLog() 具有的函数 Logger.testLog.info("testing log 1 \(me)") 我得到以下错误:

    No exact matches in call to instance method 'appendInterpolation'

    我如何记录 me enum?

    1 回复  |  直到 1 年前
        1
  •  4
  •   mongrong    1 年前

    我认为这是因为swift上的字符串插值与log不兼容。

    @HangarRash 正如您所说,使用CustomStringConvertible将解决此问题。

    enum MyEnum: String, CustomStringConvertible {
        case testing = "testing"
        
        var description: String {
             return self.rawValue
         }
    }
    
        func testLog() {
            let me = MyEnum.testing
            
            let someDate = Date()
            
            Logger.testLog.info("testing log 1 \(me)") // << No exact matches in call to instance method 'appendInterpolation'
            Logger.testLog.info("testing log 1 \(someDate)") // << WORKS
            
        }