Я столкнулся с интересной проблемой при попытке использовать канал JSON, сгенерированный PHP / MySQL с использованием PDO. По умолчанию результат запроса, например, SELECT COUNT(id) FROM table name
возвращается как String
, но когда я делаю какие-либо математические вычисления на результат, например $result = $result + 1;
результат — «правильный» тип данных.
В PHP это не было проблемой, но я использую JSON для отправки этих результатов в мое приложение для iOS, поэтому, хотя я знаю, какой тип данных я хочу, чтобы что-то было в iOS, я не знаю, какой это будет тип, когда это произойдет. достигает меня. Например, я хотел бы сделать:
if let json = jsonResult as? [String:Any] {
let score = jsonData["score"] as? Int ?? 0
let years = jsonData["years"] as? String
}
Но:
score
это String
в формате JSON (например, score:"7"
), score
просто закончится как 0
years
является Integer
в формате JSON (например, years:2015
) годы закончатся как nil
Я понимаю, что сделать JSON правильно — лучший способ добиться этого, однако есть ли надежный способ сделать это в iOS? Ради этого вопроса предположим, что я не могу изменить JSON.
В идеале я ищу разумную однострочную строку, которая позволит мне преобразовать данные в правильный тип данных, независимо от того, какой тип был ранее (т.е. в приведенном выше примере). years
станет String
независимо от того, было ли это String
или же Int
в JSON, и оценка станет Int
независимо от того, было ли это String
или Int
в формате JSON)?
Спасибо заранее!
Я думаю, что вы можете сделать что-то вроде
let score = Int(jsonData["score"] as? String)
Других решений пока нет …