A partir de la versión 4.0.0 del SDK de Places para iOS, GMSPlaceField
ahora usa la macro NS_OPTIONS
. Las versiones 3.x del SDK tienen GMSPlaceField
como NS_ENUM
y siguen siendo compatibles.
Si usas Objective‐C, no habrá implicaciones. Puedes continuar usando
GMSPlaceField
como antes.Si usas Swift: Si usas Swift, tu implementación no funcionará. la sintaxis
GMSPlaceField(rawValue:)
como el constructor, que en versiones anteriores del SDK se muestra como unGMSPlaceField?
opcional. Versión 4.0.0 y posteriores muestra un valorGMSPlaceField
no opcional. cualquier operación que se que se llevan a cabo en la opción opcional, como las verificaciones condicionales o la desenvolvimiento forzado, fallan. Además, ahora puedes usar la sintaxis de array para combinar objetosGMSPlaceField
.
Migra tu código
Ciertas sintaxis de desenvolvimiento condicional o desenvolvimiento forzado fallarán en Swift.
En los siguientes ejemplos, se muestra cómo solucionar estos problemas
Sintaxis del array para declarar GMSPlaceField
:
Desenvolvimiento condicional
La sentencia del siguiente ejemplo muestra cómo usar if
para crear una
Array GMSPlaceField
que requiere un desenvolvimiento condicional. Esto generará
en un error del compilador ("El inicializador para la vinculación condicional debe tener Opcional
tipo, no GMSPlaceField
").
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Para solucionar este problema, quita la sentencia if
, como se muestra a continuación:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
También puedes usar la sintaxis de array, como se muestra aquí:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Forzar el desenvolvimiento
En la sentencia del siguiente ejemplo, se muestra el uso de GMSPlaceField
como una regla
tipo opcional. Esto generará un error del compilador ("No se puede forzar la separación del valor").
con el tipo no opcional GMSPlaceField."):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Para solucionar este problema, usa GMSPlaceField
como un tipo opcional, como se muestra a continuación:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
También puedes usar la sintaxis de array, como se muestra aquí:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]