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

بدءًا من الإصدار 4.0.0 من حزمة تطوير برامج الأماكن لأجهزة iOS، سيتضمن GMSPlaceField النوع يستخدم الآن وحدة الماكرو NS_OPTIONS. تحتوي الإصدارات 3.x من حزمة SDK على GMSPlaceField. كـ NS_ENUM ولا تزال متاحة.

  • في حالة استخدام الهدف ج: ليس هناك أي آثار. يمكنك المتابعة باستخدام GMSPlaceField على النحو السابق.

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

جارٍ نقل الرمز

ستؤدي بعض عمليات فك الالتفاف الشرطي أو فرض فك الترميز إلى تعطُّل بنية Swift. توضح الأمثلة التالية كيفية إصلاح هذه المشكلات، وتوضح أيضًا استخدام بنية المصفوفة للإعلان عن 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 باعتباره النوع اختياري. سيؤدي هذا إلى خطأ في المحول البرمجي ("لا يمكن فرض إلغاء التفاف القيمة من النوع غير الاختياري 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]