Получить значение Int из строки - PullRequest
0 голосов
/ 06 марта 2019

Я получаю ответ API, как это:

{"id":10,"user_name":"test"}

Я могу без проблем проанализировать имя пользователя в табличном представлении, но идентификатор всегда отображается пустым

Это мой cellForRowAt func:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "userDataCell", for: indexPath) as! UserDataCell
        let userDetails = responseArray[indexPath.row]
        cell.userNameField.text = userDetails["user_name"] as? String
        cell.idTextField.text = userDetails["id"] as? String
        return cell
    }

Мне кажется, проблема в том, что я пытаюсь разобрать строку, когда получаю Int

Модификация до as? Int

cell.idTextField.text = userDetails["id"] as? Int

Не решил проблему. Любая помощь?

Ответы [ 4 ]

3 голосов
/ 06 марта 2019

Можете ли вы попробовать это как временное решение?

cell.idTextField.text = String(userDetails["id"] as? Int ?? 0)
1 голос
/ 06 марта 2019

Я бы сделал это в два шага, сначала попытался получить Int, а затем назначил текстовое поле, чтобы лучше контролировать то, что назначено текстовому полю

if let intValue = dict["id"] as? Int {
    cell.idTextField.text = String(intValue)
} else {
    cell.idTextField.text = ""
}
1 голос
/ 06 марта 2019

вы можете сделать безопасное преобразование из строки в int:

  if let myInt = Int(userDetails["id"] as? String ?? "") {

        }

обновление:

cell.idTextField.text = userDetails["id"] as? Int

В любом случае, когда вы установите его на idTextField идентификатор должен иметь тип String, а не Int, просто измените это: cell.idTextField.text = userDetails["id"] as? String ?? ""

если вы хотите установить идентификатор как Int, вам нужно установить так:

 if let id = Int(userDetails["id"]) {
                cell.idTextField.text = "\(id)"
            }
0 голосов
/ 06 марта 2019

Попробуйте это

cell.idTextField.text = userDetails["id"] as? String ?? userDetails["id"] as? Int ?? "none"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...