Key Value API

Die Key Value API bietet neue benutzerdefinierte APIs für die Datenverwaltung für Geräte-, Raum- und Automatisierungsobjekte. Der Lebenszyklus der benutzerdefinierten Daten ist streng auf den Lebenszyklus des Objekts beschränkt, mit dem sie verknüpft sind. Benutzerdefinierte Daten wie „Lucys Zimmer“, die mit einem Raumobjekt verknüpft sind, werden beispielsweise automatisch mit dem Raumobjekt gelöscht, verschoben oder übertragen (über Strukturen hinweg).

Die Swift API-Änderung bezieht sich auf den CustomAppData Controller und bietet Erweiterungen für die Objekte, zu denen die benutzerdefinierten Anwendungs daten gehören. Außerdem sind die Standardfunktionen zum Erstellen, Lesen, Aktualisieren und Löschen (CRUD) enthalten.

Gerätebeispiel

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)

Raumbeispiel

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

Automatisierungsbeispiel

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)

Einschränkungen

  • Der Schlüssel muss ein String mit gültigen UTF-8-Zeichen und einer maximalen Länge von 128 Zeichen sein. Der Schlüssel kann ein leerer String sein.
  • Der Wert muss ein String mit gültigen UTF-8-Zeichen und einer maximalen Länge von 1.024 Zeichen sein. Der Wert kann ein leerer String sein.
  • Jedes Objekt kann 10 Zeilen mit Schlüssel/Wert-Paaren haben.