Key Value API

‫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 שורות של צמדי מפתח/ערך.