От php я запрашиваю ответ. Ответ должен быть массивом [String]
Тем не менее, Свифт рассматривает этот ответ как String
,
Как я могу конвертировать String
в [String]
?
PHP:
print_r(json_encode($arrayUser));
// Print Out ["aaa","bbb","ccc","ddd"]
SWIFT 2.0:
let infoArray = responseValue
// Reads ["aaa","bbb","ccc","ddd"]
print(infoArray[1])
// error: Ambiguous use of 'subscript'
Почему Swift видит массив как строку? И как я могу преобразовать его в массив [String]
?
Я также попробовал:
let infoArray = responseValue as! [String]
//warning: Cast from 'String' to unrelated type '[String]' always fails
ну, учитывая, что это массив строк, а не примитивов, возможно, этот будет работать, как предложено Нейт Кук:
let infoArray = responseValue.map { $0.copy() }
ОБНОВЛЕНО (после @Eric D. комментариев):
если responseValue равно [String], тогда:
let infoArray:[String] = responseValue.map { $0.copy() as! String }
если responseValue — String, тогда:
let infoArray = Array(responseValue.characters)
Другим предложением было бы перебрать responseValue и добавить каждый элемент в новый массив строк. Но производительность может быть проблемой.
Других решений пока нет …