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가 아닌 선택적 유형이어야 합니다.')가 발생합니다.
// 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]