[String: Any]
타입으로 만들어진 데이터를 각 타입별로 별도의 api 를 호출해야 할 때 구분하기
let d: [String: Any] = [
"int": 42,
"double": 3.14,
"bool": true,
"date": Date(),
"string": "Hello World",
"dateString": "2022-07-22T13:14:15+09:00",
]
이렇게 있을 때, value의 type 에 따라 다르게 처리해야할 때가 있다.
type으로 캐스팅 해보는 방식으로 처리하기.
주의할것! JSON 으로 date 가 전달될 때는 String 으로 올 수 있기 때문에 dateformat 까지 확인해줘야 한다.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
d.forEach { k, v in
switch v {
case let b as Bool:
print("\(k) = [Bool](\(b))")
case let d as Double:
print("\(k) = [DOUBLE](\(d))")
case let i as Int:
print("\(k) = [INT](\(i))")
case let d as Date:
print("\(k) = [Date](\(d))")
default:
let s = "\(v)"
if let d = dateFormatter.date(from: s) {
print("\(k) = [Date](\(d))")
} else {
print("\(k) = [String](\(s))")
}
}
}
맨 마지막에는 String으로 퉁 치기. 하지만 전에 dateformat 확인하기.