2016-08-13 5 views
1

Я пытаюсь выяснить, как создать сетку информации в Swift. Для того, чтобы сделать это, я собираюсь нужно сделать переменную, которая примерно так:Swift многозначный словарь

var allInformationByDate = [(2016-08-13, 21, 82, 75.75, 38.34),(2016-08-12, 23, 85, 75.25, 38.34),(2016-08-11, 23, 85, 75.25, 38.34)] 

Очень важно, что я могу добавить даты с их соответствующими номерами, как дни идут, а также ссылаться на день по их дате.

Кто-нибудь знает, как это сделать? Заранее большое спасибо.

+0

Можете ли вы объяснить немного больше того, чего вы хотите достичь? – Harsh

+0

Я хочу, чтобы сохранить другие переменные (Ints and Doubles) в качестве чисел в этой новой структуре, чтобы впоследствии использовать эту информацию. Я бы назвал это словарем, но я думаю, что словари имеют только 2 переменные на запись (слово и определение), но мне понадобится еще несколько переменных, записанных для каждой записи. Надеюсь, все это имеет смысл. По сути, я спрашиваю, как построить что-то вроде примера, который я дал (или как правильно его написать). – adman

+0

В конце концов, я хотел бы иметь возможность использовать эту информацию для создания сетки или графика всей информации. – adman

ответ

3

Я думаю, что словари имеют только 2 переменные на запись (слово и определение), но мне нужно было еще несколько переменных, записанных для каждой записи.

Это только отчасти правильно. Словарь сопоставляет ключи со значениями. Но значение не ограничивается одним целым числом. Значением может быть экземпляр класса, экземпляр структуры, экземпляр enum или кортеж/тройной/и т. Д.

Таким образом, вы можете просто сделать:

let allInformationByDate = ["2016-08-13": (21, 82, 75.75, 38.34), "2016-08-12": (23, 85, 75.25, 38.34), "2016-08-11": (23, 85, 75.25, 38.34)] 

Но это противно. Вы должны лучше создать структуру данных для представления этих данных:

struct DayData { // Let’s guess 
    let coffeeInLiters: Int 
    let interstateRoute: Int 
    let averageBPM: Double 
    let temperatureInDegrees: Double 
} 

var allInformationByDate = [ 
    "2016-08-13": DayData(coffeeInLiters: 21, interstateRoute: 82, averageBPM: 75.75, temperatureInDegrees: 38.34), 
    "2016-08-12": DayData(coffeeInLiters: 23, interstateRoute: 85, averageBPM: 75.25, temperatureInDegrees: 38.34), 
    "2016-08-11": DayData(coffeeInLiters: 23, interstateRoute: 85, averageBPM: 75.25, temperatureInDegrees: 38.34) 
] 

Затем вы можете получить доступ к данным, как:

allInformationByDate["2016-08-13"]!.averageBPM 

и вы можете добавить данные, такие как

allInformationByDate["2016-08-14"] = DayData(coffeeInLiters: 25, interstateRoute: 87, averageBPM: 75.15, temperatureInDegrees: 38.34) 

Если вы сделали coffeeInLiters a var, вы также можете обновить эту переменную, например:

allInformationByDate["2016-08-14"]!.coffeeInLiters = 27 
0

Вы можете создать массив из словарей, а затем получить доступ к ним следующим образом (я создал случайные ключи, как значение1, значение2 и больше, вы можете сделать то, что подходит вам лучше всего, а затем использовать их, как вы хотите):

var allInformationByDate:[[String:AnyObject]] = [["date":"2016-08-13","value1": 21, "value2": 82, "value3": 75.75, "value4":38.34],["date":"2016-08-13","value1": 21, "value2": 82, "value3": 75.75, "value4":38.34],["date":"2016-08-13","value1": 21, "value2": 82, "value3": 75.75, "value4":38.34]] 

print(allInformationByDate.first!["date"]) 
print(allInformationByDate.first!["value1"]) 

прилагая больше словарей для массива:

allInformationByDate.append(["date":"2016-08-13","value1": 21, "value2": 82, "value3": 75.75, "value4":38.34]) 
+0

Thanks @Harsh. Знаете ли вы, что после этого я добавлю больше словарей к этому массиву? – adman

+0

На печатных линиях это дает мне ошибку «Ожидаемая декларация». Любая идея почему? – adman

Смежные вопросы