Key Value API

Interfejs Key Value API udostępnia nowe interfejsy API do zarządzania danymi niestandardowymi dla obiektów Device, Room i Automation. Cykl życia danych niestandardowych jest ściśle ograniczony do cyklu życia obiektu, z którym są powiązane. Na przykład dane niestandardowe (takie jak „Pokój Lucy”) powiązane z obiektem Room zostaną automatycznie usunięte, przeniesione lub przesłane (między strukturami) wraz z obiektem Room.

Zmiana interfejsu Swift API dotyczy kontrolera CustomAppData i udostępnia rozszerzenia obiektów, do których należą dane aplikacji niestandardowej, oraz standardowe funkcje tworzenia, odczytywania, aktualizowania i usuwania (CRUD).

Przykład urządzenia

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)

Przykład dotyczący pokoju

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

Przykład automatyzacji

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)

Ograniczenia

  • Klucz musi być ciągiem prawidłowych znaków UTF-8 o maksymalnej długości 128 znaków. Klucz może być pustym ciągiem znaków.
  • Wartość musi być ciągiem prawidłowych znaków UTF-8 o maksymalnej długości 1024 znaków. Wartość może być pustym ciągiem znaków.
  • Każdy obiekt może mieć 10 wierszy par klucz-wartość.