swift字典类型判断要谨慎!!!
以下可至playground运行
import UIKit
var dic1: [String: Any?] = ["key1": "a", "key2": nil]
var dicString1: [String: String?] = ["key1": "a", "key2": nil]
var dic2 = dic1["key1"]
var dic3 = dic1["key2"]
let a = dic1 is [String: Any]
let b = dic2 is [String: Any]
let c = dic3 is [String: Any]
let d = dicString1 is [String: Any]
print(a) // true
print(b) // false
print(c) // false
print(d) // true
// nil 判断 is [String: Any] => false
let jsonString = "{\"key1\": \"value1\", \"key2\": null, \"key3\": {}}"
let data = jsonString.data(using: .utf8)
let dic = try JSONSerialization.jsonObject(with: data!, options: .mutableContainers) as? [String: Any]
print(dic)
print(dic?["key2"] is [String: Any]) // null 判断 is [String: Any] => false
if let value3 = dic?["key3"] as? [String: Any] { // true
print("value3")
}
if dic?["key3"] is [String: Any] { // true
print("value3-1")
}
if let value4 = dic?["key4"] as? [String: Any] { // false
print("value4")
}
if dic?["key4"] is [String: Any] { // false
print("value4-1")
}
iOS相关