Mulai dari Places SDK for iOS Versi 4.0.0, jenis GMSPlaceField
sekarang menggunakan makro NS_OPTIONS
. SDK versi 3.x memiliki GMSPlaceField
sebagai NS_ENUM
dan masih didukung.
Jika Anda menggunakan Objective-C: tidak ada implikasi. Anda dapat terus menggunakan
GMSPlaceField
seperti sebelumnya.Jika Anda menggunakan Swift: Penerapan Anda akan rusak jika Anda menggunakan sintaksis
GMSPlaceField(rawValue:)
sebagai konstruktor, yang versi SDK lama ditampilkan sebagaiGMSPlaceField?
opsional. Versi 4.0.0 dan yang lebih tinggi menampilkan nilaiGMSPlaceField
non-opsional; setiap operasi yang dilakukan pada opsional, seperti pemeriksaan bersyarat atau penguraian paksa, akan gagal. Selain itu, Anda kini dapat menggunakan sintaksis array untuk menggabungkanGMSPlaceField
Memigrasikan kode
Sintaksis penguraian bersyarat atau penguraian paksa tertentu akan rusak di Swift.
Contoh berikut menunjukkan cara memperbaiki masalah ini, dan juga menunjukkan penggunaan
sintaksis array untuk mendeklarasikan GMSPlaceField
:
Penghapusan bungkus bersyarat
Pernyataan dalam contoh berikut menunjukkan penggunaan if
untuk membuat
array GMSPlaceField
yang memerlukan penguraian bersyarat. Hal ini akan menyebabkan
error compiler ("Pembuat inisial untuk binding bersyarat harus memiliki jenis
Opsional, bukan GMSPlaceField
".)
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Untuk memperbaiki masalah ini, hapus pernyataan if
, seperti yang ditunjukkan di sini:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Anda juga dapat menggunakan sintaksis array, seperti yang ditunjukkan di sini:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Memaksa pembukaan
Pernyataan dalam contoh berikut menunjukkan penggunaan GMSPlaceField
sebagai jenis
non-opsional. Hal ini akan menyebabkan error compiler ("Tidak dapat memaksa nilai unwrap
dari jenis non-opsional GMSPlaceField"):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Untuk memperbaiki masalah ini, gunakan GMSPlaceField
sebagai jenis opsional, seperti yang ditunjukkan di sini:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Anda juga dapat menggunakan sintaksis array, seperti yang ditunjukkan di sini:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]