@andrey_kino

Как String массив превратить в Int массив (многомерный)?

Есть массив
[["9", "6", "7", "8", "5"], ["1", "1", "1", "1", "1"]]
, нужно получить новый[[9, 6, 7, 8, 5], [1, 1, 1, 1, 1]]
Делаю и получаю ошибку
let arr = [["9", "6", "7", "8", "5"], ["1", "1", "1", "1", "1"]]
let mapArr = arr.map{Int($0).map{Int($0)}}

хотя сама по себе конструкция рабочая и дает результат
let arr = [[1,2,3],[4,5,6]]
let mapArr = arr.map{$0.map{$0 * 2}}
mapArr // [[2, 4, 6], [8, 10, 12]]
  • Вопрос задан
  • 744 просмотра
Решения вопроса 1
maximglobak
@maximglobak
iOS developer
Добрый день!
В вашем первом примере вы пытаетесь массив со строками преобразовать в Int и получаете ошибку.
Если использовать .map, то он возвращает массив опциональными значениями. И в таком случае если попадется строка в массиве, которую невозможно будет конвертировать в Int, то в этом месте будет nil.

Если использовать flatMap, то он оставит только те значения, которые удачно преобразовались в Int.
let arr = [["9", "6", "7", "8", "5"], ["1", "1", "1", "1", "1"]]
let mapArr = arr.flatMap { $0.flatMap { Int($0) } }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы