Key Value API מספק ממשקי API חדשים לניהול נתונים בהתאמה אישית לאובייקטים של מכשירים, חדרים ואוטומציה. מחזור החיים של הנתונים המותאמים אישית מוגבל למחזור החיים של האובייקט שאליו הם משויכים. לדוגמה, נתונים בהתאמה אישית (כמו 'החדר של לוס') שמשויכים לאובייקט Room יימחקו, יועברו או יועברו (בין מבנים) באופן אוטומטי עם אובייקט Room.
השינוי ב-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, באורך של עד 1,024 תווים. הערך יכול להיות מחרוזת ריקה.
- כל אובייקט יכול להכיל 10 שורות של צמדי מפתח/ערך.