[iOS]cell.textLabel?.textにStringではなくIntを入れたい

swift

tableviewで文字列を入力してリストを作るサンプルは多くあるけど、Int型を入れるサンプルはあまりなかったので備忘録に。

やりたいこと

tableviewのリストに文字列ではなく数字(Int)を展開したい。

fruits = ["バナナ", "リンゴ", "オレンジ"]

こんな感じで配列の中を展開するというサンプルはよく見かけました。

でも、今回やりたいことは

numbers = [1,2,3]

このように配列の中に格納したInt型を出力したいわけです。

詰まったこと

Numbers = [1,2,3]
//セルの中身を定義するデータソースメソッド
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    { let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
      cell.textLabel?.text = Numbers[indexPath.row] return cell
}

当然なのですが、cell.textLabel?.text = Numbers[indexPath.row]この部分は型が違うのでCannot assign value of type ‘Int’ to type ‘String?’とXcodeに怒れられます。

頭では配列の型をString型に変換すればいいだけでしょ?と分かるのですが、どうもうまく行きません。

解決策

stackoverflowにまさに答えがありました。

https://stackoverflow.com/questions/48553347/cannot-assign-value-of-type-int-to-type-string-with-tableview-in-cellforro

要は式展開です。””で囲んで、\()で式展開すればOKです。

cell.textLabel?.text = "\(Numbers[indexPath.row])"


カテゴリー