iOS için Yerler SDK'sının 4.0.0 sürümünden itibaren GMSPlaceField
türü artık NS_OPTIONS
makrosunu kullanıyor. SDK'nın 3.x sürümleri GMSPlaceField
olarak NS_ENUM
ve hâlâ desteklenmektedir.
Objective-C kullanıyorsanız: Herhangi bir etkisi yoktur.
GMSPlaceField
uygulamasını eskisi gibi kullanmaya devam edebilirsiniz.Swift kullanıyorsanız: Yapılandırıcı olarak
GMSPlaceField(rawValue:)
söz dizimini kullanıyorsanız uygulamanız bozulur. SDK'nın eski sürümleri, bu söz dizimini isteğe bağlıGMSPlaceField?
olarak döndürüyordu. 4.0.0 ve sonraki sürümlerde isteğe bağlı olmayan birGMSPlaceField
değeri döndürülür. İsteğe bağlı olarak gerçekleştirilen işlemler (ör. koşullu kontroller veya zorunlu sarmalama açma) başarısız olur. Ayrıca, artık dizi söz dizimini kullanarakGMSPlaceField
'ları birleştirebilirsiniz.
Kodunuzu taşıma
Belirli koşullu sarmalama açma veya zorunlu sarmalama açma söz dizimleri Swift'te bozulur.
Aşağıdaki örneklerde bu sorunların nasıl düzeltileceği gösterilmekte ve GMSPlaceField
değerini bildirmek için dizi söz diziminin nasıl kullanılacağı açıklanmaktadır:
Koşullu sarmalama açma
Aşağıdaki örnekteki ifadede, koşullu sarmalama açma gerektiren bir if
dizisi oluşturmak için GMSPlaceField
kullanıldığı gösterilmektedir. Bu durum, derleyici hatasına ("Koşullu bağlama için başlatıcı, GMSPlaceField
değil, isteğe bağlı türde olmalıdır.") neden olur.
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Bu sorunu düzeltmek için if
ifadesini aşağıdaki örnekte gösterildiği gibi kaldırın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Dizi söz dizimini de kullanabilirsiniz. Örneğin:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Sarmalama açmaya zorlama
Aşağıdaki örnekteki ifadede, GMSPlaceField
'nın isteğe bağlı olmayan bir tür olarak kullanıldığı gösterilmektedir. Bu durum, derleyici hatasına ("Cannot force unwrap value
of non-optional type GMSPlaceField.") neden olur:
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Bu sorunu düzeltmek için, burada gösterildiği gibi GMSPlaceField
öğesini isteğe bağlı bir tür olarak kullanın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Dizi söz dizimini de kullanabilirsiniz. Örneğin:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]