Mulai Places SDK for iOS Versi 4.0.0, jenis GMSPlaceField
kini menggunakan makro NS_OPTIONS
. SDK versi 3.x memiliki GMSPlaceField
sebagai NS_ENUM
dan masih didukung.
Jika Anda menggunakan Objective-C: tidak ada implikasinya. Anda dapat terus menggunakan
GMSPlaceField
seperti sebelumnya.Jika menggunakan Swift: Implementasi akan rusak jika Anda menggunakan sintaksis
GMSPlaceField(rawValue:)
sebagai konstruktor, dengan SDK versi lama yang ditampilkan sebagaiGMSPlaceField?
opsional. Versi 4.0.0 dan yang lebih tinggi menampilkan nilaiGMSPlaceField
non-opsional; setiap operasi yang dilakukan pada opsi opsional, seperti pemeriksaan bersyarat atau pelepasan paksa, akan gagal. Selain itu, Anda kini dapat menggunakan sintaksis array untuk menggabungkanGMSPlaceField
Memigrasikan kode
Sintaksis pembukaan bersyarat tertentu atau pembukaan paksa akan rusak di Swift.
Contoh berikut menunjukkan cara memperbaiki masalah ini, dan juga menunjukkan penggunaan sintaksis array untuk mendeklarasikan GMSPlaceField
:
Pembukaan bersyarat
Pernyataan dalam contoh berikut menunjukkan penggunaan if
untuk membuat array GMSPlaceField
yang memerlukan pembukaan bersyarat. Hal ini akan mengakibatkan
error compiler ("Initializer untuk binding kondisional harus memiliki jenis
Optional, 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]
Paksa pembukaan
Pernyataan dalam contoh berikut menunjukkan penggunaan GMSPlaceField
sebagai jenis non-opsional. Tindakan ini akan mengakibatkan error compiler ("Tidak dapat membuka nilai paksa
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]