Mulai Places SDK for iOS Versi 4.0.0, GMSPlaceField
sekarang menggunakan makro NS_OPTIONS
. SDK versi 3.x memiliki GMSPlaceField
sebagai NS_ENUM
dan masih didukung.
Jika Anda menggunakan Objective-C: tidak akan ada implikasinya. Anda dapat melanjutkan menggunakan
GMSPlaceField
seperti sebelumnya.Jika Anda menggunakan Swift: Implementasi akan terganggu jika Anda menggunakan sintaksis
GMSPlaceField(rawValue:)
sebagai konstruktor, yang versi lamanya SDK ditampilkan sebagaiGMSPlaceField?
opsional. Versi 4.0.0 dan yang lebih tinggi menampilkan nilaiGMSPlaceField
non-opsional; setiap operasi yang yang dilakukan secara opsional, seperti pemeriksaan kondisional atau pembukaan paksa, akan gagal. Selain itu, Anda sekarang dapat menggunakan sintaksis array untuk menggabungkanGMSPlaceField
Memigrasikan kode
Sintaks pembukaan bersyarat atau pelepasan paksa tertentu akan rusak di Swift.
Contoh berikut menunjukkan cara memperbaiki masalah tersebut, dan juga mendemonstrasikan 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 menghasilkan
dalam error compiler ("Initializer untuk binding bersyarat harus memiliki Optional
jenis, 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]
Pembukaan paksa
Pernyataan dalam contoh berikut menunjukkan penggunaan GMSPlaceField
sebagai ekspresi non-
opsional. Ini akan mengakibatkan error compiler ("Tidak dapat memaksa nilai unwrap
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]