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

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

  • إذا كنت تستخدم Objective-C: ما مِن تأثيرات. يمكنك مواصلة استخدام GMSPlaceField كالمعتاد.

  • في حال استخدام 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]