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