NS_OPTIONS로 GMSPlaceField로 이전

iOS용 Places SDK 버전 4.0.0부터 GMSPlaceField 유형에서 이제 NS_OPTIONS 매크로를 사용합니다. SDK 버전 3.x는 GMSPlaceFieldNS_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]