Я не эксперт в Swift, и я использовал его в течение нескольких месяцев для создания приложений Mac. Я хотел бы представить в памяти структуру данных, подобную структуре PHP ассоциативных массивов, но в Swift. Давайте представим себе, что у меня есть таблица данных для загрузки в память со следующими полями/записей:Swift: ассоциативный массив с несколькими ключами: значения
ID Surname Name
1 XXX YYY
2 ZZZ WWW
3 JJJ KKK
То, что я хотел бы получить это ассоциативный массив, как тот, который я смог бы получить в PHP:
$arr[1]["Surname"] = "XXX"
$arr[1]["Name"] = "YYY"
$arr[2]["Surname"] = "ZZZ"
$arr[2]["Name"] = "WWW"
Я просто не могу найти нужную структуру данных в Свифт, чтобы получить тот же результат. Я пробовал использовать следующий фрагмент кода:
class resObject: NSObject {
private var cvs = [Int: [String: String]]()
override init() {
self.cvs[0] = ["Name" : "XXX"]
self.cvs[0] = ["Surname" : "YYY"]
self.cvs[1] = ["Name" : "ZZZ"]
self.cvs[1] = ["Surname" : "WWW"]
for (key, arr) in cvs {
let sur = arr["Surname"]
let nam = arr["Name"]
println("Row \(key) - Surname: \(sur), Name: \(nam)")
}
super.init()
}
}
Он выглядит очень близко, но он не работает. Что я получаю на выходе следующий (я не забочусь о «факультативных (ов)»:
Row 0 - Surname: Optional("XXX"), Name: nil
Row 1 - Surname: Optional("ZZZ"), Name: nil
Я попытался сделать некоторые тесты в отладке, и я заметил, что данные, которые сохраняются в памяти это то же самое, что и у последнего ключа: используется пара значений (т. е. если я сначала назначу фамилию и имя второй, я получаю фамилию как nil и Name с правильным значением).
Пожалуйста, учтите, что, как в примере, t знать структуру данных, когда я объявляю переменную, поэтому объявляю ее пустой и заполняю ее программно позже.
Я не знаю, если я просто не объявляю структуру данных c правильно, или если это Swift, что не позволяет этого делать. Любая помощь будет оценена.
Большое спасибо. С уважением, Alessio
Похоже, что вы хотите, это объект объектов словаря. – picciano
Не согласен. Вы действительно думаете, что он хочет, чтобы каждый элемент массива был аморфным и расширяемым, чтобы содержать произвольные сопоставления строк String -> String? Это не структурированные данные, требующие жестко заданных свойств? – BaseZen