NS_OPTIONS로 GMSPlaceField로 이전

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

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