无法识别 Swift 中的词典扩展名

Dictionary extension in Swift is not recognized

我正在尝试使用以下代码扩展字典:

extension Dictionary where Key: ExpressibleByStringLiteral, Value: AnyObject {

    var jsonString: String? {
    if let dict = (self as AnyObject) as? Dictionary<String, AnyObject> {
        do {
            let data = try JSONSerialization.data(withJSONObject: dict, options: JSONSerialization.WritingOptions(rawValue: UInt.allZeros))
            if let string = String(data: data, encoding: String.Encoding.utf8) {
                return string
            }
        } catch {
            print(error)
        }
    }
    return nil
    }

}

我写的是这样的:

let x: [String: String] = ["": ""]    
x.jsonString

我收到这个错误:

Value of type '[String: String]' as no member 'jsonString'

我缺少什么吗?

因为 String 是一个值类型,寻找它是

public struct String {

AnyObject仅指class的任何实例,等同于Objective-C中的id,所以x

的这个声明

[String: String] 不适合 [String: AnyObject]

因为 Any 指的是 class、struct 或枚举的任何实例,所以它非常适合

根本不需要约束字典值类型:

extension Dictionary where Key: ExpressibleByStringLiteral {
    var jsonString: String? {
        guard let data = try? JSONSerialization.data(withJSONObject: self)
        else { return nil }
        return String(data: data, encoding: .utf8)
    }
}