يستخدم النوع 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]