NS_OPTIONS로 GMSPlaceField로 이전

iOS용 Places SDK 버전 4.0.0부터 GMSPlaceField 유형은 이제 NS_OPTIONS 매크로를 사용합니다. SDK 버전 3.x에는 GMSPlaceField가 있습니다. NS_ENUM로 제공되고 여전히 지원됩니다.

  • Objective-C를 사용하는 경우: 아무런 영향도 없습니다. 계속 진행할 수 있음 이전과 같이 GMSPlaceField를 사용합니다.

  • Swift를 사용하는 경우: GMSPlaceField(rawValue:) 문법을 생성자로 사용하며, 이전 버전에서는 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를 선택적 유형입니다. 이렇게 하면 컴파일러 오류('포스 해제 값을 강제로 해제할 수 없음)가 발생합니다. ")를 사용합니다.

// 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]