GMSPlaceField'a NS_OPTIONS olarak taşınıyor

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.

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ümünde NS_ENUM olarak GMSPlaceField bulunmaktadır ve hâlâ desteklenmektedir.

  • Objective-C kullanıyorsanız: Bu durumun herhangi bir etkisi olmayacaktır. Daha önce olduğu gibi GMSPlaceField hizmetini kullanmaya devam edebilirsiniz.

  • Swift kullanıyorsanız: Oluşturucu olarak GMSPlaceField(rawValue:) söz dizimini kullanıyorsanız SDK'nın eski sürümleri isteğe bağlı GMSPlaceField? olarak döndürülmüşse uygulamanız bozulur. 4.0.0 ve sonraki sürümler, isteğe bağlı olmayan bir GMSPlaceField değeri döndürür. İsteğe bağlı olarak gerçekleştirilen koşullu kontroller veya zorla açmalar gibi işlemler başarısız olur. Buna ek olarak, GMSPlaceField s'yi birleştirmek için artık dizi söz dizimini kullanabilirsiniz

Kodunuzu taşıma

Belirli koşullu açma veya zorla açma söz dizimi, Swift'te bozulur. Aşağıdaki örneklerde, bu sorunların nasıl düzeltileceği ve GMSPlaceField öğesini tanımlamak için dikey söz diziminin nasıl kullanılacağı gösterilmektedir:

Koşulu açma

Aşağıdaki örnekte yer alan ifade, koşullu sarmalanma gerektiren bir GMSPlaceField dizisi oluşturmak için if etiketinin kullanıldığını göstermektedir. Bu, bir derleyici hatasına neden olur ("Koşullu bağlama için başlatıcının GMSPlaceField değil, İsteğe bağlı türü olmalıdır").

// Before.
if let field = GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }

Bu sorunu düzeltmek için burada gösterildiği gibi if ifadesini kaldırın:

// After.
let field =  GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something

Dizi söz dizimini de burada gösterildiği gibi kullanabilirsiniz:

let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]

Sarmalamayı zorla

Aşağıdaki örnekteki ifade, isteğe bağlı olmayan bir tür olarak GMSPlaceField etiketinin kullanıldığını göstermektedir. Bu, bir derleyici hatasına neden olur ("İsteğe bağlı olmayan GMSPlaceField türünün sarmalanma değeri zorunlu kılınamaz").

// Before.
let field = GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!

Bu sorunu düzeltmek için, aşağıda gösterildiği gibi GMSPlaceField türünü isteğe bağlı bir şekilde kullanın:

// After.
let field =  GMSPlaceField(
    rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)

Dizi söz dizimini de burada gösterildiği gibi kullanabilirsiniz:

let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]