Places SDK for iOS バージョン 4.0.0 以降では、GMSPlaceField 型で NS_OPTIONS マクロが使用されるようになりました。SDK のバージョン 3.x では GMSPlaceField が NS_ENUM として使用されており、引き続きサポートされています。
Objective-C を使用している場合: 影響はありません。引き続き
GMSPlaceFieldを使用できます。Swift を使用している場合: 以前のバージョンの SDK でオプショナル
GMSPlaceField?として返されていたGMSPlaceField(rawValue:)構文をコンストラクタとして使用している場合、実装が中断されます。バージョン 4.0.0 以降では、オプショナルでないGMSPlaceField値が返されます。条件付きチェックや強制アンラップなど、オプショナルに対して実行されるオペレーションは失敗します。また、配列構文を使用してGMSPlaceFieldを組み合わせることもできます。
コードを移行する
Swift では、特定の条件付きアンラップまたは強制アンラップの構文が中断されます。
次の例は、これらの問題を修正する方法と、配列構文を使用して GMSPlaceField を宣言する方法を示しています。
条件付きアンラップ
次の例のステートメントは、条件付きアンラップが必要な GMSPlaceField 配列を作成するために if を使用する方法を示しています。この場合、コンパイル エラー(「Initializer for conditional binding must have Optional type, not GMSPlaceField」)が発生します。
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
この問題を修正するには、次のように if ステートメントを削除します。
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
次のように配列構文を使用することもできます。
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
強制アンラップ
次の例のステートメントは、GMSPlaceField をオプショナルでない型として使用する方法を示しています。この場合、コンパイル エラー(「Cannot force unwrap value of non-optional type GMSPlaceField.」)が発生します。
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
この問題を修正するには、次のように GMSPlaceField をオプショナル型として使用します。
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
次のように配列構文を使用することもできます。
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]