#arrays #swift #for-loop
#массивы #swift #для цикла
Вопрос:
У меня есть вызов API, который выводит массив CustomDescription. У каждого элемента этого массива есть имя, поэтому я создал следующее:
- Массив строк с именем namArray
- Цикл for, который запускает мой массив CustomDescription и добавляет его элементы в namArray.
Моя проблема возникает, когда я печатаю свой namArray после цикла for, и он просто показывает один элемент внутри массива, он не добавляет элементы, соответствующие вызовам.
Вот мой код:
func getTypes(typesUrl: String, handler: @escaping([CustomDescription]) -> Void) {
AF.request(typesUrl).validate().responseTypes { (types) in
guard let typeData = types.value,
let typeNames = typeData.names else { return }
var namArray = [String]()
for name in typeNames {
guard let types = name.name else { return }
if name.language?.name == "es" {
namArray.append(types)
}
}
print(namArray)
handler(typeNames)
}
}
И моя консоль регистрирует следующее:
You've got 94 species successfully
["Planta"]
["Veneno"]
Вместо этого я хочу получить [«Planta», «Veneno»], но не могу понять, как это сделать.
Комментарии:
1. вы пытались сделать его глобальным (вывод из функции) var namArray = [String]()
2. Это работает, но (я работаю с pokemons в CollectionView) когда я нажимаю на pokemon, он продолжает добавлять имена, и мне просто нужно одно или два имени, присвоенные каждому типу pokemon (не все pokes имеют два типа).).
3. что это значит, что это работает?
4. Для оператора guard внутри цикла вы хотели сделать
return
вместоcontinue
?