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ır. SDK'nın 3.x sürümlerinde GMSPlaceField
NS_ENUM
olarak bulunur ve hâlâ desteklenmektedir.
Objective-C kullanıyorsanız: Bu değişiklikten etkilenmezsiniz.
GMSPlaceField
'ü eskisi gibi kullanmaya devam edebilirsiniz.Swift kullanıyorsanız: SDK'nın eski sürümleri isteğe bağlı
GMSPlaceField?
olarak döndürdüğü oluşturucu olarakGMSPlaceField(rawValue:)
söz dizimini kullanıyorsanız uygulamanız bozulur. 4.0.0 ve sonraki sürümler isteğe bağlı olmayan birGMSPlaceField
değeri döndürür; isteğe bağlı öğe üzerinde yapılan koşullu kontroller veya zorunlu sarma açma işlemleri başarısız olur. Ayrıca,GMSPlaceField
'leri birleştirmek için artık dizi söz dizimini kullanabilirsiniz.
Kodunuzu taşıma
Belirli koşullu sarma açma veya zorla sarma açma söz dizimi Swift'te çalışmaz.
Aşağıdaki örneklerde bu sorunların nasıl düzeltileceği gösterilmektedir. Ayrıca, GMSPlaceField
değerini tanımlamak için dizi söz dizimini kullanma gösterilmektedir:
Koşullu sarmalama açma
Aşağıdaki örnekteki ifadede, koşullu sarma açma gerektiren bir GMSPlaceField
dizisi oluşturmak için if
kullanılmaktadır. Bu, derleyici hatasına neden olur ("Koşullu bağlama için başlatıcının türü GMSPlaceField
değil, İsteğe Bağlı olmalıdır").
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Bu sorunu düzeltmek için if
ifadesini burada gösterildiği gibi kaldırın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Sarmalama açma işlemini zorlama
Aşağıdaki örnekte, GMSPlaceField
türünü isteğe bağlı olmayan bir tür olarak kullanma gösterilmektedir. Bu işlem, derleyici hatasına ("İsteğe bağlı olmayan GMSPlaceField türündeki değerin sarmalanması zorlanamaz.") neden olur:
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Bu sorunu düzeltmek için burada gösterildiği gibi isteğe bağlı tür olarak GMSPlaceField
kullanın:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]