GMSPlaceField को NS_OPTIONS में माइग्रेट करना

iOS के लिए, Places SDK टूल के 4.0.0 वर्शन से शुरू करके, GMSPlaceField प्रकार अब NS_OPTIONS मैक्रो का उपयोग करता है. SDK टूल के वर्शन 3.x में GMSPlaceField है NS_ENUM के तौर पर इस्तेमाल किया जा सकता है और अब भी काम कर सकता है.

  • अगर आप Objective-C का इस्तेमाल कर रहे हैं: इसका कोई मतलब नहीं है. जारी रखने के लिए, पहले की तरह GMSPlaceField का इस्तेमाल करके.

  • अगर आप स्विफ़्ट का इस्तेमाल कर रहे हैं: अगर आप स्विफ़्ट का इस्तेमाल कर रहे हैं, तो लागू करने का तरीका टूट जाएगा कंस्ट्रक्टर के तौर पर, GMSPlaceField(rawValue:) सिंटैक्स, जिसके पुराने वर्शन SDK टूल का इस्तेमाल, GMSPlaceField? के तौर पर किया गया है. 4.0.0 और इसके बाद के वर्शन एक ऐसा GMSPlaceField वैल्यू दिखाता है जो ज़रूरी नहीं है; ऐसा कोई भी ऑपरेशन जो यह वैकल्पिक होने पर किया जाता है, जैसे कि सशर्त जांच या फ़ोर्स अनरैप विफल. इसके अलावा, अब GMSPlaceField को जोड़ने के लिए अरे सिंटैक्स का इस्तेमाल किया जा सकता है

आपका कोड माइग्रेट किया जा रहा है

स्विफ़्ट में कुछ कंडिशनल अनरैपिंग या फ़ोर्स अन रैपिंग सिंटैक्स काम नहीं करेंगे. नीचे दिए गए उदाहरणों में, इन समस्याओं को ठीक करने का तरीका बताया गया है. साथ ही, 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 का इस्तेमाल गैर- वैकल्पिक प्रकार. इससे कंपाइलर गड़बड़ी मिलेगी ("अनरैप वैल्यू को ज़बरदस्ती नहीं बदला जा सकता{/1} का टाइप 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]