Я уже попытался это:Любой массив в массив символов
var newArray = oldArray.map
{
Character($0)
}
где oldArray является массив типа [Любой]. Однако при вводе этого кода я получаю сообщение об ошибке. Есть ли другой вариант?
Я уже попытался это:Любой массив в массив символов
var newArray = oldArray.map
{
Character($0)
}
где oldArray является массив типа [Любой]. Однако при вводе этого кода я получаю сообщение об ошибке. Есть ли другой вариант?
Any
не могут быть непосредственно преобразованы в Character
, но должен быть сначала отливают в String
(из которого она является простой задачей для преобразования (первый символ в строке) в Character
:
let arr: [Any] = ["k", "n"]
let newArr = arr.flatMap { ($0 as? String)?.characters.first }
print(newArr, type(of: newArr)) // ["k", "n"] Array<Character>
Если oldArray содержит объект типа Character:
var oldArray:[Any] = []
....
var newArray = oldArray.map {
$0 as! Character
}
таким образом он компилирует, но вы можете получить исключение во время выполнения Accordin к значению, сохраненному в oldArray.
Это будет взрываться эффектно, если элементы в' oldArray' ('' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' редактор – NRitH
Да, но он компилируется, ошибка компилятора не генерируется. У пользователя была ошибка во время компиляции. –
Хорошо, спасибо, теперь нет ошибок! Тем не менее, я хотел использовать этот код, кроме того, в своем коде. Этот код работал с другим массивом, но теперь я получаю ошибку: «Значение типа« [Символ] »не имеет символа члена». Это моя строка кода: let decoded = String (newArray.characters.map ({decode [$ 0] ?? $ 0})) можете ли вы ответить на этот вопрос или я должен сделать еще один поток? Спасибо! – Petravd1994
Что ошибка ? – NRitH
«Невозможно вызвать инициализатор для типа« Символ »с списком аргументов типа« ((Любой)) »« – Petravd1994
Что такое 'oldArray' массив *? * – Hamish