A partire dalla versione 4.0.0 di Places SDK for iOS, il tipo GMSPlaceField
ora utilizza la macro NS_OPTIONS
. Le versioni 3.x dell'SDK hanno GMSPlaceField
come NS_ENUM
e sono ancora supportate.
Se utilizzi Objective-C:non ci sono implicazioni. Puoi continuare a utilizzare
GMSPlaceField
come prima.Se utilizzi Swift: l'implementazione non funzionerà se utilizzi la sintassi
GMSPlaceField(rawValue:)
come costruttore, che le versioni precedenti dell'SDK restituivano comeGMSPlaceField?
facoltativo. La versione 4.0.0 e successive restituisce un valoreGMSPlaceField
non facoltativo. Eventuali operazioni eseguite su facoltativo, come controlli condizionali o scollegamento forzato, non andranno a buon fine. Inoltre, ora puoi utilizzare la sintassi dell'array per combinare i valoriGMSPlaceField
Eseguire la migrazione del codice
Determinate sintassi di scollegamento condizionale o di scollegamento forzato non funzioneranno in Swift.
Gli esempi riportati di seguito mostrano come risolvere questi problemi e illustrano anche l'utilizzo della sintassi dell'array per dichiarare GMSPlaceField
:
Unwrapping condizionale
L'istruzione nell'esempio seguente mostra l'utilizzo di if
per creare un array GMSPlaceField
che richiede l'estrazione condizionale. Ciò comporterà un errore del compilatore ("L'inizializzatore per l'associazione condizionale deve avere il tipo Optional, non GMSPlaceField
").
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Per risolvere il problema, rimuovi l'istruzione if
, come mostrato di seguito:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Puoi anche utilizzare la sintassi dell'array, come mostrato di seguito:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Annullamento del wrapping forzato
L'istruzione nell'esempio seguente mostra l'utilizzo di GMSPlaceField
come tipo obbligatorio. Ciò comporterà un errore del compilatore ("Impossibile forzare lo scollegamento del valore
del tipo non facoltativo GMSPlaceField"):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Per risolvere il problema, utilizza GMSPlaceField
come tipo facoltativo, come mostrato di seguito:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Puoi anche utilizzare la sintassi dell'array, come mostrato di seguito:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]