От 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 и добавить каждый элемент в новый массив строк. Но производительность может быть проблемой.
copy
был для NSMutableArray). И это не ответ на вопрос ОП в любом случае.