Фраза Int((Response["newMessagesCount"] as? String)!)!
означает:
- поиск значения для ключа
"newMessagesCount"
в Response
; - проверка, является ли это
String
, если так затем сохраните ссылку String
на нее, в противном случае оставьте nil
; - , а первый
!
затем скажет: «О, но я предполагаю, что я не получил nil
, хотя я и допустил это просто» затем действуйте так, как будто у меня сейчас есть определенная ссылка на String
, в противном случае выведите исключение "; - обтекание
Int
, а затем попытается проанализировать то, что, как вы теперь гарантировали, является String
для Int
; - последний
!
затем в основном говорит: предположим, что преобразование определенно сработало, и, если нет, вызовите исключение.
Таким образом, вы можете хотя бы отменить это до :
Int(Response["newMessagesCount"] as! String)!
... но похоже, что вы анализируете контент, полученный из других источников, поэтому на самом деле ошибка заключается в использовании !
вообще, где угодно, поскольку вы не можете проверьте введенные данные.
Возможно, вы хотите что-то более похожее на:
if let newMessagesCountResponse = Response["newMessagesCount"] as? String,
let newMessagesCount = Int(newMessagesCountResponse) {
print("\(newMessagesCount) new messages")
} else {
print("newMessagesCount wasn't present in the dictionary,",
"or its value wasn't a string,",
"or the string couldn't be parsed as an int")
}