#arrays #swift #swiftui
#массивы #swift #swiftui
Вопрос:
Я очень новичок в Swift, поэтому извините меня, если это глупый вопрос.
У меня есть X
массив объектов в формате JSON, который я загружаю в свое приложение и передаю представления (для него у меня есть определенная структура). Теперь в другом представлении у меня есть новая структура, которая выглядит следующим образом:
struct Pin: Identifiable {
var name: String
let id = UUID()
}
а затем создайте массив следующим образом:
@State private var pins: [Pin] = []
Как я могу сделать так, чтобы этот массив содержал Pin
объекты, но созданные из моего существующего X
массива. Я имею в виду, что каждый новый Pin
внутренний pins
массив будет иметь значения Pin(name: X.name[0]
и так далее для каждого элемента в моем X
массиве.
Итак, мой окончательный pins
массив должен выглядеть примерно так:
[Pin(name: x.name[0]...), Pin(name: x.name[1]...), Pin(name: x.name[2]...)...]
Комментарии:
1. Что такое
X
array? А как насчетimage
в новом массиве?2. @pawello2222
X
массив представляет собой массив объектов, каждый из которых имеетname
,description
и пару других полей, которые мне не нужны для этого конкретного представления. Вы можете игнорировать изображение, я собирался его получить, но в конечном итоге решил не делать этого, удалю его из примера кода 🙂
Ответ №1:
Вы можете использовать map
для преобразования одного массива в другой:
pins = x.map { Pin(name: $0.name) }
или, медленнее, но показывает другой способ использования map
:
pins = x.map(.name).map(Pin.init)
Комментарии:
1. АХ, удивительно, это сделало именно то, что мне было нужно! Я разработчик JavaScript и использую карты каждый божий день, но по какой-то причине мне не приходило в голову, что их также можно использовать в Swift… В любом случае, большое вам спасибо!