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 powiązany z cyklem życia obiektu, z którym są one powiązane. Na przykład dane niestandardowe (np. „Pokój Lucy”) powiązane z obiektem Room zostaną automatycznie usunięte, przeniesione lub przesłane (między strukturami) razem z obiektem Room.
Zmiana w interfejsie Swift API koncentruje się na
CustomAppData
kontrolerze i udostępnia rozszerzenia obiektów, do których należą dane aplikacji niestandardowej, oraz standardowe funkcje tworzenia, odczytywania, aktualizowania i usuwania
(CRUD).
Przykład dotyczący 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 dotyczący 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ść.