iOS용 Places SDK 버전 4.0.0부터 GMSPlaceField
유형에서 이제 NS_OPTIONS
매크로를 사용합니다. SDK 버전 3.x는 GMSPlaceField
을 NS_ENUM
로 사용하며 여전히 지원됩니다.
Objective-C를 사용하는 경우: 영향이 없습니다. 이전과 같이
GMSPlaceField
를 계속 사용할 수 있습니다.Swift를 사용하는 경우: 이전 버전의 SDK에서 선택적
GMSPlaceField?
로 반환된GMSPlaceField(rawValue:)
구문을 생성자로 사용하는 경우 구현이 중단됩니다. 버전 4.0.0 이상에서는 선택사항이 아닌GMSPlaceField
값을 반환합니다. 조건부 검사 또는 강제 언래핑과 같이 선택사항에 대해 실행되는 작업은 실패합니다. 또한 이제 배열 구문을 사용하여GMSPlaceField
를 결합할 수 있습니다.
코드 이전
특정 조건부 언래핑 또는 강제 언래핑 문법은 Swift에서 작동하지 않습니다.
다음 예에서는 이러한 문제를 해결하는 방법을 보여주고 배열 구문을 사용하여 GMSPlaceField
를 선언하는 방법도 보여줍니다.
조건부 언래핑
다음 예의 문은 조건부 언래핑이 필요한 GMSPlaceField
배열을 만들기 위해 if
를 사용하는 것을 보여줍니다. 이 경우 컴파일러 오류 ('조건부 바인딩의 이니셜라이저에는 GMSPlaceField
이 아닌 Optional 유형이 있어야 합니다')가 발생합니다.
// 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
를 선택사항이 아닌 유형으로 사용하는 것을 보여줍니다. 이로 인해 컴파일러 오류 ('Cannot force unwrap value of non-optional type 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]