iOS için Yerler SDK'sının 4.0.0 sürümünden itibaren GMSPlaceField
türü artık NS_OPTIONS
makrosu kullanıyor. SDK'nın 3.x sürümlerinde GMSPlaceField
bulunuyor
NS_ENUM
olarak değiştirildi ve hâlâ desteklenmektedir.
Objective-C kullanıyorsanız: Herhangi bir etkisi yoktur. Devam edebilirsiniz
GMSPlaceField
kullanılıyor.Swift kullanıyorsanız: oluşturucu olarak
GMSPlaceField(rawValue:)
söz dizimini kullanır. Eski sürümlerin isteğe bağlıGMSPlaceField?
olarak döndürülen SDK'nın içeriğidir. 4.0.0 ve üzeri sürümler isteğe bağlı olmayan birGMSPlaceField
değeri döndürür; tüm bu işlemler için koşullu kontroller veya zorla açma gibi isteğe bağlı başarısız olur. Buna ek olarak,GMSPlaceField
öğelerini birleştirmek için artık dizi söz dizimini kullanabilirsiniz.
Kodunuzu taşıma
Swift'te, belirli koşullu sarmalama açma veya sarmalama açmayı zorunlu kılma söz dizimi bozulur.
Aşağıdaki örneklerde bu sorunların nasıl giderileceği gösterilmektedir. Ayrıca,
GMSPlaceField
tanımlamak için dizi söz dizimi:
Koşullu sarmalama açma
Aşağıdaki örnekte bulunan ifade, bir anahtar kelime oluşturmak için if
Koşullu sarmalama gerektiren GMSPlaceField
dizisi. Bu,
bir derleyici hatasında ("Koşullu bağlama için başlatıcının İsteğe Bağlı Olması gerekir)
türü, GMSPlaceField
" değil.)
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Bu sorunu düzeltmek için if
ifadesini aşağıda gösterildiği gibi kaldırın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Ayrıca, burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Sarmalamayı açmaya zorla
Aşağıdaki örnekteki ifade, GMSPlaceField
özelliğinin
isteğe bağlı tür. Bu, derleyici hatasına neden olur ("Sarmalama açma değeri zorunlu kılınamaz"
olabilir."):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Bu sorunu düzeltmek için aşağıda gösterildiği gibi isteğe bağlı bir tür olarak GMSPlaceField
kullanın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Ayrıca, burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]