نقل البيانات إلى GMSPlaceField باسم NS_OPTIONS

يستخدم النوع GMSPlaceField الآن وحدة الماكرو NS_OPTIONS، بدءًا من الإصدار 4.0.0 من حزمة تطوير البرامج للأماكن (SDK) في الأماكن لنظام التشغيل iOS. وتتضمّن الإصدارات 3.x من حزمة تطوير البرامج (SDK) GMSPlaceField باسم "NS_ENUM"، وما زالت متاحة.

  • إذا كنت تستخدم Objective-C، لن يكون هناك أي آثار. يمكنك مواصلة استخدام "GMSPlaceField" كما في السابق.

  • في حال استخدام Swift: سيتوقف تنفيذك إذا كنت تستخدم بنية GMSPlaceField(rawValue:) كدالة إنشائية، والتي عرضت الإصدارات القديمة من حزمة SDK كدالة GMSPlaceField? اختيارية. يعرض الإصدار 4.0.0 والإصدارات الأحدث قيمة GMSPlaceField غير اختيارية، وستفشل أي عمليات يتم تنفيذها وفقًا للخيار الاختياري، مثل عمليات التحقق المشروطة أو فرض إلغاء الالتفاف. بالإضافة إلى ذلك، يمكنك الآن استخدام بنية الصفيفة لدمج GMSPlaceField.

نقل الرمز

سوف تنقطع بعض بناءات جملة غير التفافية شرطية أو فرض فك التفاف في Swift. توضّح الأمثلة التالية كيفية حلّ هذه المشاكل، وتوضّح أيضًا استخدام بنية مصفوفة لتعريف GMSPlaceField:

فك الالتفاف المشروط

توضح العبارة في المثال التالي استخدام 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]