Как преобразовать массив Int в строку? массив в Swift

У меня есть массив, который выглядит так:

var arr: [Int] = [1,2,3,4,5]

Чтобы напечатать это, я хотел бы преобразовать его в:

var newArr: [String?] = ["1","2","3","4","5"]

Пожалуйста, помогите мне! Спасибо заранее.

Ответы

Ответ 1

Скорость воздушной скорости дала вам ответ:

var arr: [Int] = [1,2,3,4,5]

var stringArray = arr.map 
{ 
  String($0)
}

Или, если вы хотите, чтобы ваш stringArray имел тип [String?]

var stringArray = arr.map 
{ 
  Optional(String($0))
}

Эта форма оператора карты является методом типа Array. Он выполняет закрытие, которое вы предоставляете для каждого элемента массива, и собирает результаты всех этих вызовов в новый массив. Он отображает один массив в массив результатов. Закрытие, в которое вы проходите, должно возвращать объект типа объектов в вашем выходном массиве.

Мы могли бы написать его в более длинной форме:

var stringArray = arr.map(
{
  (number: Int) -> String in
  return String(number)
})

EDIT:

Если вам просто нужно установить свои значения int в пользовательские ячейки представления таблицы, вы, вероятно, должны оставить массив как int и просто установить значения в свои ячейки в вашем методе cellForRowAtIndexPath.

func tableView(tableView: UITableView, 
  cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{
  let cell = tableView.dequeueReusableCellWithIdentifier("cell", 
    forIndexPath: indexPath) as! MyCustomCellType
  cell.textLabel?.text = "\(arr[indexPath.row])"
  return cell
}

Изменить # 2:

Если вы хотите напечатать массив, вам лучше оставить его как массив объектов Int и просто распечатать их:

arr.forEach { print($0) }

Ответ 2

Вы должны использовать

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

чтобы представить значение в метке как строку.