เริ่มต้นด้วย Places SDK เวอร์ชัน 4.0.0 สำหรับ iOS ดังนั้น GMSPlaceField
จะใช้มาโคร NS_OPTIONS
SDK เวอร์ชัน 3.x มี GMSPlaceField
NS_ENUM
และยังคงรองรับอยู่
หากใช้ Objective-C: จะไม่มีผล คุณสามารถดำเนินการต่อได้ โดยใช้
GMSPlaceField
เหมือนเดิมหากคุณใช้ Swift: การติดตั้งใช้งานจะขัดข้องหากใช้ ไวยากรณ์
GMSPlaceField(rawValue:)
เป็นเครื่องมือสร้าง ซึ่งเวอร์ชันเก่า ของ SDK แสดงผลเป็นGMSPlaceField?
ที่ไม่บังคับ เวอร์ชัน 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]