iOS için Yerler SDK'sının 4.0.0 sürümünden itibaren GMSPlaceField
türü artık NS_OPTIONS
makrosunu kullanmaktadır. SDK'nın 3.x sürümleri, NS_ENUM
olarak GMSPlaceField
özelliğine sahiptir ve hâlâ desteklenmektedir.
Objective-C kullanıyorsanız bunun herhangi bir etkisi olmaz.
GMSPlaceField
uygulamasını eskisi gibi kullanmaya devam edebilirsiniz.Swift kullanıyorsanız: Oluşturucu olarak
GMSPlaceField(rawValue:)
söz dizimini kullanıyorsanız uygulamanız bozulur. Bu söz dizimi, SDK'nın eski sürümlerinin isteğe bağlıGMSPlaceField?
olarak döndürür. 4.0.0 ve sonraki sürümler, isteğe bağlı olmayan birGMSPlaceField
değeri döndürür; koşullu kontroller veya sarmalama açmayı zorlama gibi isteğe bağlı işlem üzerinde gerçekleştirilen işlemler başarısız olur. Buna ek olarak artıkGMSPlaceField
değerlerini birleştirmek için dizi söz dizimini kullanabilirsiniz
Kodunuzu taşıma
Bazı koşullu sarmalama açma veya sarmalanmaya zorlama söz dizimi Swift'te bozulur.
Aşağıdaki örnekler, bu sorunların nasıl düzeltileceğini ve GMSPlaceField
tanımlamak için dizi söz diziminin nasıl kullanılacağını göstermektedir:
Koşullu sarmalama açma
Aşağıdaki örnekte bulunan ifadede, koşullu sarmalama açma gerektiren bir GMSPlaceField
dizisi oluşturmak için if
kullanımı gösterilmektedir. Bu işlem bir 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 aşağıda 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çmayı zorla
Aşağıdaki örnekteki ifadede, GMSPlaceField
'in isteğe bağlı olmayan bir tür olarak kullanılması gösterilmektedir. Bu, bir derleyici hatasıyla sonuçlanır ("İsteğe bağlı olmayan GMSPlaceField türünde sarmalama açma değeri zorlanamaz."):
// 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ı 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]