GMSPlaceField'a NS_OPTIONS olarak taşınıyor

iOS için Yerler SDK'sının 4.0.0 sürümünden itibaren GMSPlaceField türü artık NS_OPTIONS makrosu kullanıyor. SDK'nın 3.x sürümlerinde GMSPlaceField bulunuyor NS_ENUM olarak değiştirildi ve hâlâ desteklenmektedir.

  • Objective-C kullanıyorsanız: Herhangi bir etkisi yoktur. Devam edebilirsiniz GMSPlaceField kullanılıyor.

  • Swift kullanıyorsanız: oluşturucu olarak GMSPlaceField(rawValue:) söz dizimini kullanır. Eski sürümlerin isteğe bağlı GMSPlaceField? olarak döndürülen SDK'nın içeriğidir. 4.0.0 ve üzeri sürümler isteğe bağlı olmayan bir GMSPlaceField değeri döndürür; tüm bu işlemler için koşullu kontroller veya zorla açma gibi isteğe bağlı başarısız olur. Buna ek olarak, GMSPlaceField öğelerini birleştirmek için artık dizi söz dizimini kullanabilirsiniz.

Kodunuzu taşıma

Swift'te, belirli koşullu sarmalama açma veya sarmalama açmayı zorunlu kılma söz dizimi bozulur. Aşağıdaki örneklerde bu sorunların nasıl giderileceği gösterilmektedir. Ayrıca, GMSPlaceField tanımlamak için dizi söz dizimi:

Koşullu sarmalama açma

Aşağıdaki örnekte bulunan ifade, bir anahtar kelime oluşturmak için if Koşullu sarmalama gerektiren GMSPlaceField dizisi. Bu, bir derleyici hatasında ("Koşullu bağlama için başlatıcının İsteğe Bağlı Olması gerekir) türü, GMSPlaceField" değil.)

// 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

Ayrıca, burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:

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

Sarmalamayı açmaya zorla

Aşağıdaki örnekteki ifade, GMSPlaceField özelliğinin isteğe bağlı tür. Bu, derleyici hatasına neden olur ("Sarmalama açma değeri zorunlu kılınamaz" olabilir."):

// 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ı bir tür olarak GMSPlaceField kullanın:

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

Ayrıca, burada gösterildiği gibi dizi söz dizimini de kullanabilirsiniz:

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