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.
GMSPlaceFielduygulaması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 birGMSPlaceFielddeğ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]