Xcode, Swift Не удалось привести значение типа '__NSCFNumber' (0x7fff87c511a0) к 'NSString' (0x7fff87d0eee8) - PullRequest
0 голосов
/ 18 февраля 2020

Я сталкиваюсь с ошибкой: Could not cast value of type '__NSCFNumber' (0x7fff87c511a0) to 'NSString' (0x7fff87d0eee8).

the line : self.setNewMessagesCount(newMessagesCount: Int((Response["newMessagesCount"] as? String)!)!)

что я делаю не так? (я использую более новую версию xcode)

спасибо за помощь и хорошего дня! :)

1 Ответ

1 голос
/ 19 февраля 2020

Фраза Int((Response["newMessagesCount"] as? String)!)! означает:

  1. поиск значения для ключа "newMessagesCount" в Response;
  2. проверка, является ли это String, если так затем сохраните ссылку String на нее, в противном случае оставьте nil;
  3. , а первый ! затем скажет: «О, но я предполагаю, что я не получил nil, хотя я и допустил это просто» затем действуйте так, как будто у меня сейчас есть определенная ссылка на String, в противном случае выведите исключение ";
  4. обтекание Int, а затем попытается проанализировать то, что, как вы теперь гарантировали, является String для Int;
  5. последний ! затем в основном говорит: предположим, что преобразование определенно сработало, и, если нет, вызовите исключение.

Таким образом, вы можете хотя бы отменить это до :

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")
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...