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
이 아닌 선택사항 유형이 있어야 함').
// 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]