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

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

  • আপনি যদি উদ্দেশ্য-সি ব্যবহার করেন: কোন প্রভাব নেই। আপনি আগের মত GMSPlaceField ব্যবহার চালিয়ে যেতে পারেন।

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

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

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

শর্তাধীন unwrapping

নিম্নলিখিত উদাহরণে বিবৃতিটি ব্যবহার করে দেখায় if একটি GMSPlaceField অ্যারে তৈরি করতে হয় যার জন্য শর্তসাপেক্ষ খুলতে হয়। এর ফলে একটি কম্পাইলার ত্রুটি দেখা দেবে ("কন্ডিশনাল বাইন্ডিংয়ের জন্য ইনিশিয়ালাইজারের অবশ্যই ঐচ্ছিক প্রকার থাকতে হবে, 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 ব্যবহার করে দেখায়। এর ফলে একটি কম্পাইলার ত্রুটি দেখা দেবে ("অ-ঐচ্ছিক ধরনের 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]