How to solve “String interpolation produces a debug description for an optional value; did you mean to make this explicit?” in Xcode 8.3 beta?

后端 未结 8 1213
失恋的感觉
失恋的感觉 2020-12-12 19:04

Since beta 8.3, zillions warnings \"String interpolation produces a debug description for an optional value; did you mean to make this explicit?\" appeared in my code.

8条回答
  •  醉酒成梦
    2020-12-12 19:33

    After updating to Xcode 8.3 and getting a lot of warning messages, I came up with the following that is more like the original output behavior, easy to add in, reduces the verboseness of using "String(describing:)" both in code and output.

    Basically, add an Optional extension that gives a String describing the thing in the optional, or simply "nil" if not set. In addition, if the thing in the optional is a String, put it in quotes.

    extension Optional {
        var orNil : String {
            if self == nil {
                return "nil"
            }
            if "\(Wrapped.self)" == "String" {
                return "\"\(self!)\""
            }
            return "\(self!)"
        }
    }
    

    And usage in a playground:

    var s : String?
    var i : Int?
    var d : Double?
    
    var mixed = "s = \(s.orNil)    i = \(i.orNil)   d = \(d.orNil)" // "s = nil    i = nil   d = nil"
    
    d = 3
    i = 5
    s = ""
    mixed = "s = \(s.orNil)    i = \(i.orNil)   d = \(d.orNil)" // "s = ""    i = 5   d = 3.0"
    
    s = "Test"
    d = nil
    mixed = "s = \(s.orNil)    i = \(i.orNil)   d = \(d.orNil)" // "s = "Test"    i = 5   d = nil"
    

    Thanks for help from following link:

    check-if-variable-is-an-optional-and-what-type-it-wraps

提交回复
热议问题