Key Value API, डिवाइस, कमरे, और ऑटोमेशन ऑब्जेक्ट के लिए नए कस्टम डेटा मैनेजमेंट एपीआई उपलब्ध कराता है. कस्टम डेटा का लाइफ़साइकल, उस ऑब्जेक्ट के लाइफ़साइकल से जुड़ा होता है जिससे वह जुड़ा होता है. उदाहरण के लिए, रूम ऑब्जेक्ट से जुड़ा कस्टम डेटा (जैसे, "Lucy's room") रूम ऑब्जेक्ट के साथ अपने-आप मिट जाएगा, ट्रांसफ़र हो जाएगा या एक स्ट्रक्चर से दूसरे स्ट्रक्चर में ट्रांसफ़र हो जाएगा.
डिवाइस का उदाहरण
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)
Room का उदाहरण
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 लाइनें हो सकती हैं.