Estoy tratando de averiguar cómo hacer una cuadrícula de información en Swift. Para hacer eso, necesitaré crear una variable que sea algo así:

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)]

Es importante que pueda agregar fechas con sus números correspondientes a medida que pasan los días, así como hacer referencia a los números de un día por su fecha.

¿Alguien sabe cómo hacer esto? Muchas gracias por adelantado.

2
adman 13 ago. 2016 a las 09:12

2 respuestas

La mejor respuesta

Creo que los diccionarios solo tienen 2 variables por entrada (una palabra y una definición), pero necesitaría algunas variables más registradas por entrada.

Eso es solo parcialmente correcto. Un diccionario asigna claves a valores. Pero un valor no se limita a un número entero. Un valor puede ser muy bien una instancia de clase, una instancia de estructura, una instancia de enumeración o una tupla / triple / etc.

Entonces simplemente podrías hacer:

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)]

Pero eso es desagradable. Debería crear mejor una estructura de datos para representar esos datos:

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)
]

Entonces puede acceder a sus datos como:

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

Y podrías agregar datos como

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

Si hizo coffeeInLiters a var, también podría actualizar esa variable, por ejemplo:

allInformationByDate["2016-08-14"]!.coffeeInLiters = 27
4
idmean 13 ago. 2016 a las 06:57

Puede crear una variedad de diccionarios y luego acceder a ellos de la siguiente manera (he creado claves aleatorias como valor1, valor2 y más, puede hacer lo que más le convenga y luego usarlos como desee):

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"])

Agregar más diccionarios a la matriz:

allInformationByDate.append(["date":"2016-08-13","value1": 21, "value2": 82, "value3": 75.75, "value4":38.34])
0
Harsh 13 ago. 2016 a las 06:43