Key Value 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 معتبر با حداکثر طول ۱۲۸ باشد. کلید میتواند رشتهای خالی باشد.
- مقدار باید رشتهای از نویسههای UTF-8 معتبر با حداکثر طول ۱۰۲۴ باشد. مقدار میتواند رشتهای خالی باشد.
- هر شیء میتواند ۱۰ ردیف جفت مقدار کلید داشته باشد.