কী ভ্যালু এপিআই (Key Value 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 অক্ষরের একটি স্ট্রিং হতে হবে, যার সর্বোচ্চ দৈর্ঘ্য ১২৮। কী-টি একটি খালি স্ট্রিংও হতে পারে।
- মানটি অবশ্যই বৈধ UTF-8 অক্ষরের একটি স্ট্রিং হতে হবে, যার সর্বোচ্চ দৈর্ঘ্য ১০২৪। মানটি একটি খালি স্ট্রিংও হতে পারে।
- প্রতিটি অবজেক্টে কী-ভ্যালু পেয়ারের ১০টি সারি থাকতে পারে।