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