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

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

بدايةً من الإصدار 4.0.0 من حزمة تطوير البرامج (SDK) للأماكن لنظام التشغيل 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 تتطلب الالتفاف المشروط. سينتج عن ذلك خطأ في برنامج التجميع ("يجب أن يكون المُنشئ للربط الشرطي من النوع اختياري، وليس 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]