La API de Key Value proporciona nuevas APIs personalizadas de administración de datos para los objetos Device, Room y Automation. El ciclo de vida de los datos personalizados se limita estrictamente al ciclo de vida del objeto con el que se asocian. Por ejemplo, los datos personalizados (como "La habitación de Lucía") asociados a un objeto Room se borrarán, moverán o transferirán automáticamente (entre estructuras) con el objeto Room.
El cambio en la API de Swift se centra en el controlador CustomAppData y proporciona extensiones a los objetos a los que pertenecen los datos de la aplicación personalizada, además de incluir las funciones estándar de creación, lectura, actualización y eliminación (CRUD).
Ejemplo de dispositivo
guard let device = home.devices.first(where: { $0.name == deviceName }) else { return }
var response = try await device.customAppData[key]
print("Before: \(response)")
try await device.customAppData.update(key: key, value: value)
response = try await device.customAppData[key]
print("After: \(response)")
try await device.customAppData.delete(key)
Ejemplo de habitación
guard let room = home.rooms.first(where: { $0.name == roomName }) else { return }
try await room.customAppData.update(key: "nickname", value: "Lucy's Room")
let response = try await room.customAppData["nickname"]
try await room.customAppData.delete("nickname")
Ejemplo de automatización
guard let automation = home.automations.first(where: { $0.name == automationName }) else { return }
var response = try await automation.customAppData[key]
print("Before: \(response)")
try await automation.customAppData.update(key: key, value: value)
response = try await automation.customAppData[key]
print("After: \(response)")
try await automation.customAppData.delete(key)
Restricciones
- La clave debe ser una cadena de caracteres UTF-8 válidos, con una longitud máxima de 128. La clave puede ser una cadena vacía.
- El valor debe ser una cadena de caracteres UTF-8 válidos, con una longitud máxima de 1,024. El valor puede ser una cadena vacía.
- Cada objeto puede tener 10 filas de pares clave-valor.