NS_OPTIONS হিসাবে GMSPlaceField-এ স্থানান্তরিত হচ্ছে৷

iOS-এর জন্য Places SDK-এর সংস্করণ 4.0.0 থেকে শুরু করে, GMSPlaceField টাইপটি এখন NS_OPTIONS ম্যাক্রো ব্যবহার করে। SDK-এর সংস্করণ 3.x-এ GMSPlaceField NS_ENUM হিসেবে ব্যবহার করা হয় এবং সেগুলো এখনও সমর্থিত।

  • আপনি যদি অবজেক্টিভ-সি ব্যবহার করেন, তাহলে এর কোনো প্রভাব নেই। আপনি আগের মতোই GMSPlaceField ব্যবহার করা চালিয়ে যেতে পারেন।

  • আপনি যদি Swift ব্যবহার করেন: আপনার ইমপ্লিমেন্টেশনটি ভেঙে যাবে যদি আপনি কনস্ট্রাক্টর হিসেবে GMSPlaceField(rawValue:) সিনট্যাক্সটি ব্যবহার করেন, যা SDK-এর পুরোনো সংস্করণগুলো একটি অপশনাল GMSPlaceField? সংস্করণ 4.0.0 এবং তার পরবর্তী সংস্করণগুলো একটি নন-অপশনাল GMSPlaceField ভ্যালু রিটার্ন করে; অপশনালটির উপর করা যেকোনো অপারেশন, যেমন কন্ডিশনাল চেক বা ফোর্স আনর‍্যাপ, ব্যর্থ হবে। এছাড়াও, আপনি এখন একাধিক GMSPlaceField একত্রিত করতে অ্যারে সিনট্যাক্স ব্যবহার করতে পারেন।

আপনার কোড স্থানান্তর করা হচ্ছে

সুইফটে কিছু নির্দিষ্ট কন্ডিশনাল আনর‍্যাপিং বা ফোর্স আনর‍্যাপিং সিনট্যাক্স কাজ করে না। নিম্নলিখিত উদাহরণগুলিতে দেখানো হয়েছে কীভাবে এই সমস্যাগুলি সমাধান করা যায়, এবং GMSPlaceField ডিক্লেয়ার করার জন্য অ্যারে সিনট্যাক্সের ব্যবহারও প্রদর্শন করা হয়েছে:

শর্তসাপেক্ষে মোড়ক খোলা

নিম্নলিখিত উদাহরণে, if ব্যবহার করে একটি GMSPlaceField অ্যারে তৈরি করা দেখানো হয়েছে, যার জন্য শর্তসাপেক্ষ আনর‍্যাপিং প্রয়োজন। এর ফলে একটি কম্পাইলার ত্রুটি দেখা দেবে ("শর্তসাপেক্ষ বাইন্ডিংয়ের জন্য ইনিশিয়ালাইজারের টাইপ অবশ্যই Optional হতে হবে, GMSPlaceField নয়")।

// Before.
if let field = GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }

এই সমস্যাটি সমাধান করতে, if স্টেটমেন্টটি সরিয়ে দিন, যেমনটা এখানে দেখানো হয়েছে:

// After.
let field =  GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something

আপনি অ্যারে সিনট্যাক্সও ব্যবহার করতে পারেন, যেমনটি এখানে দেখানো হয়েছে:

let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]

জোর করে মোড়ক খোলা

নিম্নলিখিত উদাহরণে GMSPlaceField একটি নন-অপশনাল টাইপ হিসেবে ব্যবহার করা দেখানো হয়েছে। এর ফলে একটি কম্পাইলার এরর দেখা দেবে ("Cannot force unwrap value of non-optional type GMSPlaceField."):

// Before.
let field = GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!

এই সমস্যাটি সমাধান করতে, এখানে দেখানো অনুযায়ী GMSPlaceField একটি ঐচ্ছিক টাইপ হিসেবে ব্যবহার করুন:

// After.
let field =  GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)

আপনি অ্যারে সিনট্যাক্সও ব্যবহার করতে পারেন, যেমনটি এখানে দেখানো হয়েছে:

let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]