Places SDK for iOS バージョン 4.0.0 以降では、GMSPlaceField
型で NS_OPTIONS
マクロが使用されるようになりました。SDK のバージョン 3.x では GMSPlaceField
が NS_ENUM
であり、引き続きサポートされています。
Objective-C を使用している場合: 影響はありません。これまでどおり
GMSPlaceField
を引き続き使用できます。Swift を使用している場合: コンストラクタとして
GMSPlaceField(rawValue:)
構文を使用している場合、実装は破棄されます。これは、古いバージョンの SDK ではオプションのGMSPlaceField?
として返されていました。バージョン 4.0.0 以降では、オプションではないGMSPlaceField
値が返されます。条件チェックや強制アンラップなど、オプションに対して実行されるオペレーションは失敗します。また、配列構文を使用してGMSPlaceField
を結合できるようになりました。
コードの移行
特定の条件付きアンラップまたは強制アンラップの構文は、Swift で破棄されます。次の例は、これらの問題を解決する方法を示しています。また、配列構文を使用して GMSPlaceField
を宣言する方法も示しています。
条件付きアンラップ
次の例のステートメントは、if
を使用して、条件付きアンラップが必要な GMSPlaceField
配列を作成する方法を示しています。これにより、コンパイラ エラー(「条件付きバインディングのイニシャライザは GMSPlaceField
ではなく Optional 型である必要があります」)が発生します。
// 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
を省略不可の型として使用しています。これにより、コンパイラ エラー(「オプション以外の型 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]