iOS के लिए Places SDK के 4.0.0 वर्शन से शुरू करने वाले GMSPlaceField
टाइप में, अब NS_OPTIONS
मैक्रो का इस्तेमाल किया जाता है. SDK टूल के 3.x वर्शन में NS_ENUM
के तौर पर GMSPlaceField
है और यह अब भी काम करता है.
अगर ऑब्जेक्ट सी का इस्तेमाल किया जा रहा है, तो इसका कोई असर नहीं पड़ेगा. आप पहले की तरह
GMSPlaceField
का इस्तेमाल करना जारी रख सकते हैं.अगर Swift का इस्तेमाल किया जा रहा है: अगर आपने कंस्ट्रक्टर के तौर पर
GMSPlaceField(rawValue:)
सिंटैक्स का इस्तेमाल किया है, तो SDK टूल के पुराने वर्शन, वैकल्पिकGMSPlaceField?
के तौर पर दिखाए जाते हैं. ऐसे में, आपका लागू करने का तरीका टूट जाएगा. वर्शन 4.0.0 और उसके बाद वाले वर्शन मेंGMSPlaceField
वैल्यू दिखती है, जो ज़रूरी नहीं है. हालांकि, विकल्प के तौर पर की गई कोई भी कार्रवाई, फ़ेल हो जाएगी. जैसे, शर्तों के साथ की जाने वाली जांच या फ़ोर्स अनरैप करना. इसके अलावा,GMSPlaceField
को आपस में जोड़ने के लिए अब आपके पास ऐरे सिंटैक्स का इस्तेमाल करने का भी विकल्प है
आपका कोड माइग्रेट किया जा रहा है
Swift में कुछ कंडीशनल अनरैपिंग या ज़बरदस्ती अनरैप करने वाले सिंटैक्स ब्रेक हो जाएंगे.
यहां दिए गए उदाहरणों में, इन समस्याओं को ठीक करने का तरीका बताया गया है. साथ ही, GMSPlaceField
का एलान करने के लिए ऐरे सिंटैक्स का इस्तेमाल करने के बारे में भी बताया गया है:
कंडिशनल अनरैप करना
नीचे दिए गए उदाहरण में स्टेटमेंट में दिखाया गया है कि GMSPlaceField
अरे बनाने के लिए, if
का इस्तेमाल किया जाता है. इस कलेक्शन को शर्त के साथ खोलने की ज़रूरत होती है. इससे कंपाइलर की गड़बड़ी होगी ("कंडिशनल बाइंडिंग के लिए शुरू करने वाले टूल में वैकल्पिक टाइप होना चाहिए, 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]