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