A partir de la versión 4.0.0 del SDK de Places para iOS, el tipo GMSPlaceField ahora usa la macro NS_OPTIONS. Las versiones 3.x del SDK tienen GMSPlaceField como NS_ENUM y aún son compatibles.
Si usas Objective-C: No hay implicaciones. Puedes seguir usando
GMSPlaceFieldcomo antes.Si usas Swift: Tu implementación se interrumpirá si usas la sintaxis
GMSPlaceField(rawValue:)como constructor, que las versiones anteriores del SDK mostraban como unGMSPlaceField?opcional. La versión 4.0.0 y las posteriores muestran un valorGMSPlaceFieldno opcional; fallará cualquier operación que se realice en el opcional, como las verificaciones condicionales o las anulaciones forzadas. Además, ahora puedes usar la sintaxis de array para combinarGMSPlaceFields.
Migra el código
Ciertas sintaxis de anulación condicional o forzada se interrumpirán en Swift.
En los siguientes ejemplos, se muestra cómo corregir estos problemas y también se demuestra el uso de la sintaxis de array para declarar GMSPlaceField:
Anulación condicional
La instrucción del siguiente ejemplo muestra el uso de if para crear un array GMSPlaceField que requiere una anulación condicional. Esto dará como resultado un error del compilador ("El inicializador para la vinculación condicional debe tener un tipo opcional, no GMSPlaceField").
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Para corregir este problema, quita la instrucción if, como se muestra aquí:
// 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]
Anulación forzada
La instrucción del siguiente ejemplo muestra el uso de GMSPlaceField como un tipo no opcional. Esto dará como resultado un error del compilador ("No se puede forzar la anulación del valor del tipo no opcional GMSPlaceField"):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Para corregir este problema, usa GMSPlaceField como un tipo opcional, como se muestra aquí:
// 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]