Избегайте использования force unwrapping
без необходимости . Я могу привести к нежелательным сбоям в вашем приложении. В вашем коде
Проверьте, является ли Data
nil
. Если это так, строка ниже приведет к исключению времени выполнения.
let jsonresponse = try JSONSerialization.jsonObject(with: Data!, options: [])
В приведенной ниже строке кода проверьте, является ли jsonarray
нулем.
self.jarray = jsonarray!
Если нет, то добавьте строку, в которой происходит сбой вашего приложения.
Попробуйте заменить код на:
class sample {
var jarray: [[String:Any]]?
init(url: String) {
if let urll = URL(string: url) {
URLSession.shared.dataTask(with: urll) { (data, response, error) in
do {
if let data = data {
let jsonresponse = try JSONSerialization.jsonObject(with: data, options: [])
self.jarray = jsonresponse as? [[String:Any]]
print(self.jarray)
DispatchQueue.main.async {
}
}
} catch {
print("error",error)
}
}.resume()
}
}
}
Кроме того, не используйте reserved words
в качестве имен переменных, как вы использовали для Data
и Error
.
Самое главное - Никогда не используйте forced unwrapping (!)
с ответом сервера. Ответ API может быть не таким, как ожидалось всегда. Попробуйте справиться с этим.