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