API ключ-значение

API «Ключ-значение» предоставляет новые API для управления пользовательскими данными для объектов «Устройство», «Комната» и «Автоматизация». Жизненный цикл пользовательских данных строго ограничен жизненным циклом объекта, с которым они связаны. Например, пользовательские данные (такие как «Комната Люси»), связанные с объектом «Комната», будут автоматически удалены, перемещены или переданы (между структурами) вместе с объектом «Комната».

Изменения в Swift API сосредоточены на контроллере CustomAppData и предоставляют расширения для объектов, к которым относятся данные пользовательского приложения, включая стандартные функции создания, чтения, обновления и удаления (CRUD).

Пример устройства

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)

Пример комнаты

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

Пример автоматизации

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)

Ограничения

  • Ключ должен представлять собой строку допустимых символов UTF-8 максимальной длиной 128 символов. Ключ может быть пустой строкой.
  • Значение должно представлять собой строку допустимых символов UTF-8 максимальной длиной 1024 символа. Значение может быть пустой строкой.
  • Каждый объект может содержать 10 строк пар ключ-значение.