Beginning with Version 4.0.0 of the Places SDK for iOS, the GMSPlaceField 
type now uses the NS_OPTIONS 
macro. Versions 3.x of the SDK have GMSPlaceField 
as NS_ENUM 
and are still supported.
-  If you are using Objective-C:there are no implications. You can continue using GMSPlaceFieldas before.
-  If you are using Swift:Your implementation will break if you are using the GMSPlaceField(rawValue:)syntax as the constructor, which older versions of the SDK returned as an optionalGMSPlaceField?. Version 4.0.0 and higher returns a non-optionalGMSPlaceFieldvalue; any operations that are performed on the optional, such as conditional checks or force unwraps, will fail. In addition, you may now use array syntax to combineGMSPlaceFields
Migrating your code
Certain conditional unwrapping or force unwrapping syntaxes will break in Swift.
The following examples show how to fix these issues, and also demonstrate using
array syntax to declare GMSPlaceField 
:
Conditional unwrapping
The statement in the following example shows using if 
to create a GMSPlaceField 
array which requires conditional unwrapping. This will result
in a compiler error ("Initializer for conditional binding must have Optional
type, not GMSPlaceField 
".)
  // Before. 
 if 
  
 let 
  
 field 
  
 = 
  
 GMSPlaceField 
 ( 
  
 rawValue 
 : 
  
 GMSPlaceField 
 . 
 name 
 . 
 rawValue 
  
 | 
  
 GMSPlaceField 
 . 
 photos 
 . 
 rawValue 
 ) 
  
 { 
  
 // Do something } 
 
 
To fix this issue, remove the if 
statement, as shown here:
  // After. 
 let 
  
 field 
  
 = 
  
 GMSPlaceField 
 ( 
  
 rawValue 
 : 
  
 GMSPlaceField 
 . 
 name 
 . 
 rawValue 
  
 | 
  
 GMSPlaceField 
 . 
 photos 
 . 
 rawValue 
 ) 
 // Do something 
 
 
You can also use array syntax, as shown here:
 let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos] 
 
Force unwrapping
The statement in the following example shows using GMSPlaceField 
as a non-
optional type. This will result in a compiler error ("Cannot force unwrap value
of non-optional type GMSPlaceField."):
  // Before. 
 let 
  
 field 
  
 = 
  
 GMSPlaceField 
 ( 
  
 rawValue 
 : 
  
 GMSPlaceField 
 . 
 name 
 . 
 rawValue 
  
 | 
  
 GMSPlaceField 
 . 
 photos 
 . 
 rawValue 
 ) 
! 
 
To fix this issue, use GMSPlaceField 
as an optional type, as shown here:
  // After. 
 let 
  
 field 
  
 = 
  
 GMSPlaceField 
 ( 
  
 rawValue 
 : 
  
 GMSPlaceField 
 . 
 name 
 . 
 rawValue 
  
 | 
  
 GMSPlaceField 
 . 
 photos 
 . 
 rawValue 
 ) 
 
 
You can also use array syntax, as shown here:
 let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos] 
 

