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. Beispielsweise werden benutzerdefinierte Daten (wie „Lucys Zimmer“), die mit einem Raumobjekt verknüpft sind, automatisch mit dem Raumobjekt gelöscht, verschoben oder (über Strukturen hinweg) übertragen.

Die Änderung der Swift API konzentriert sich auf den Controller CustomAppData und bietet Erweiterungen für die Objekte, zu denen die benutzerdefinierten Anwendungsdaten gehören, einschließlich der Standardfunktionen zum Erstellen, Lesen, Aktualisieren und Löschen (CRUD).

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)

Beispiel für einen Raum

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

Beispiel für eine Automatisierung

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 sein. Der Wert kann ein leerer String sein.
  • Jedes Objekt kann 10 Zeilen mit Schlüssel/Wert-Paaren haben.