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

تنظيم صفحاتك في مجموعات يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.

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

  • إذا كنت تستخدم الهدف ج:، ليس هناك أي تأثيرات. يمكنك مواصلة استخدام GMSPlaceField كما في السابق.

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

نقل الرمز

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

إلغاء التغليف الشرطي

يُظهر العبارة في المثال التالي استخدام if لإنشاء مصفوفة GMSPlaceField تتطلب إلغاء التغليف الشرطي. سيؤدي ذلك إلى حدوث خطأ في برنامج التجميع (&;;quot;Initializer للربط الشرطي يجب أن يحتوي على نوع اختياري، وليس 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]