我正在尝试将扩展中的字典解包为字典。但我遇到了一些问题,无法在任何地方找到答案。
我有一个获取字典的函数,在其中我想从 JSON 字典中获取一个 json 字符串,当然,如果它是一个有效的 JSON 对象:
// My Function
func foo(dict: Dictionary<String, AnyObject>) {
let jsonString = dict.jsonString // <-- 'String' is not a subtype of 'NSObject'
}
// My Extension
extension Dictionary where Key: NSObject, Value: AnyObject {
var jsonString: String? {
if let dict = self as? Dictionary<String, AnyObject> {
do {
let data = try NSJSONSerialization.dataWithJSONObject(self as Dictionary, options: NSJSONWritingOptions.PrettyPrinted)
if let string = String(data: data, encoding: NSUTF8StringEncoding) {
return string
}
} catch {
print(error)
}
return nil
}
}
}
但问题是我有一个var dict: Dictionary<String, AnyObject>
.
我也尝试过使用StringLiteralConvertible
extension Dictionary where Key: StringLiteralConvertible, Value: AnyObject {
var jsonString: String? {
if let dict = self as? Dictionary<String, AnyObject> { // <-- 'Dictionary<Key, Value>' is not convertible to 'Dictionary<String, AnyObject>'
do {
let data = try NSJSONSerialization.dataWithJSONObject(self as Dictionary, options: NSJSONWritingOptions.PrettyPrinted) // <-- Cannot convert value of type 'Dictionary<Key, Value>' to type 'Dictionary<_, _>' in coercion
if let string = String(data: data, encoding: NSUTF8StringEncoding) {
return string
}
} catch {
print(error)
}
return nil
}
}
}
但后来我得到两个错误。我怎样才能让它工作?