Kể từ phiên bản 4.0.0 của SDK Địa điểm dành cho iOS, GMSPlaceField
loại dữ liệu hiện sử dụng macro NS_OPTIONS
. Phiên bản 3.x của SDK có GMSPlaceField
dưới dạng NS_ENUM
và vẫn được hỗ trợ.
Nếu bạn đang sử dụng object-C: thì sẽ không có tác dụng gì. Bạn có thể tiếp tục sử dụng
GMSPlaceField
như trước đây.Nếu bạn đang sử dụng Swift: Quá trình triển khai sẽ có lỗi nếu bạn đang dùng cú pháp
GMSPlaceField(rawValue:)
làm hàm khởi tạo mà các phiên bản cũ hơn của SDK được trả về dưới dạngGMSPlaceField?
không bắt buộc. Phiên bản 4.0.0 trở lên trả về một giá trịGMSPlaceField
không bắt buộc; bất kỳ thao tác nào được thực hiện trên tuỳ chọn, chẳng hạn như kiểm tra có điều kiện hoặc buộc mở gói, sẽ không thành công. Ngoài ra, giờ đây, bạn có thể sử dụng cú pháp mảng để kết hợp cácGMSPlaceField
Di chuyển đoạn mã
Một số cú pháp khám phá có điều kiện hoặc buộc khám phá có điều kiện sẽ bị lỗi trong Swift.
Các ví dụ sau đây minh hoạ cách khắc phục những vấn đề này, đồng thời minh hoạ cách sử dụng
cú pháp mảng để khai báo GMSPlaceField
:
Khám phá có điều kiện
Câu lệnh trong ví dụ sau cho thấy việc sử dụng if
để tạo một
Mảng GMSPlaceField
yêu cầu khám phá có điều kiện. Kết quả là
trong lỗi trình biên dịch ("Trình khởi tạo cho liên kết có điều kiện phải có tuỳ chọn
loại, không phải GMSPlaceField
".)
// Before.
if let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
) { // Do something }
Để khắc phục vấn đề này, hãy xoá câu lệnh if
như minh hoạ dưới đây:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
// Do something
Bạn cũng có thể sử dụng cú pháp mảng, như minh hoạ dưới đây:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]
Buộc khám phá
Câu lệnh trong ví dụ sau cho thấy việc sử dụng GMSPlaceField
làm một thuộc tính không phải
loại không bắt buộc. Điều này sẽ dẫn đến lỗi trình biên dịch ("Không thể buộc giá trị gỡ bao bọc
thuộc loại GMSPlaceField không bắt buộc."):
// Before.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)!
Để khắc phục vấn đề này, hãy sử dụng GMSPlaceField
làm loại không bắt buộc, như minh hoạ dưới đây:
// After.
let field = GMSPlaceField(
rawValue: GMSPlaceField.name.rawValue | GMSPlaceField.photos.rawValue
)
Bạn cũng có thể sử dụng cú pháp mảng, như minh hoạ dưới đây:
let field = [GMSPlaceField.name, GMSPlaceField.photos]
// or
let field: GMSPlaceField = [.name, .photos]