從 Places SDK for iOS 4.0.0 版開始,GMSPlaceField
類型現在使用 NS_OPTIONS
巨集。3.x 版的 SDK 也包含 GMSPlaceField
與 NS_ENUM
相同,且仍受支援。
使用 Objective-C:不會產生任何影響。您可以繼續 和先前一樣使用
GMSPlaceField
如果是使用 Swift:如果您使用的作業系統是 Swift,導入作業就會中斷
GMSPlaceField(rawValue:)
語法做為建構函式 (舊版) 做為選用的GMSPlaceField?
傳回 SDK。4.0.0 以上版本 會傳回非選用的GMSPlaceField
值;任何屬於 ,例如條件式檢查或強制解除包裝 失敗。此外,您現在可以使用陣列語法合併GMSPlaceField
遷移程式碼
某些條件解除包裝或強制解除包裝語法會在 Swift 中損毀。
下列範例說明如何修正這些問題,並示範如何使用
宣告 GMSPlaceField
的陣列語法:
條件式解除包裝
以下範例中的陳述式說明如何使用 if
建立
GMSPlaceField
陣列,需要條件式解除包裝。這會產生
出現了編譯器錯誤 (「條件繫結的初始化工具必須具有選用性
而不是 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
做為非
選用類型這會導致編譯器發生錯誤,例如「無法強制解除包裝值
非選用類型 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]