Android와 php를 주로 개발하다가 처음으로 어제 IOS Swift 개발을 시작했습니다.
같이 공부하는 다른 사람의 소스를 깃에서 클론받아
pod install
을 한 후 빌드를 하는데 자꾸 오류가 떴습니다.
Generic type 'DataResponse' specialized with too few type parameters (got 1, but expected 2)
처음 IOS 개발을 했기때문에 일단 저 문구로 구글링을 했습니다.
Podfile에서 Alamofire의 버전을 지정하라고 여러 외국인들이 해결법을 올려놓았지만
pod 'Alamofire', '~> 5.0'
따라해봐도 해결이 안되었고, 파파고로 에러코드를 번역 돌려보니 DataResponse에 2개의 parameter가 들어가야하는데 1개밖에 안들어가있다는 뜻이었습니다.
그래서 DataResponse가 쓰이는 곳과 정의되어 있는 곳으로 가보았습니다.
@discardableResult
public func responseObject<T: BaseMappable>(queue: DispatchQueue? = nil, keyPath: String? = nil, mapToObject object: T? = nil, context: MapContext? = nil, completionHandler: @escaping (DataResponse<T>) -> Void) -> Self {
return response(queue: queue, responseSerializer: DataRequest.ObjectMapperSerializer(keyPath, mapToObject: object, context: context), completionHandler: completionHandler)
}
이런식으로 호출을 해주고 있었고,
정의는 이렇게 되어있었습니다.
여러 시행착오 끝에 해결을 했습니다.
Podfile에서 Alamofire, AlamofireNetworkActivityIndicator, AlamofireObjectMapper를 적어두면 pod install로 가장 최신버전들을 설치해주는데 그 버전들 끼리 호환이 안되는 문제 때문에 발생한 에러라고 저는 생각했습니다.
그래서 저는 이렇게 해결했습니다!
Podfile에서 호환이 되는 버전들을 지정해주었습니다.
pod 'Alamofire', '~> 4.7'
pod 'AlamofireObjectMapper', '~> 5.2'
일단 이 두가지를 pod install 하고나서
pod 'AlamofireNetworkActivityIndicator'
를 pod install 해주고 나니 원래는 3.0.1버전이 깔렸었는데 알아서 2.4버전으로 install 되었습니다.
이렇게 하고나서 build하고나니 AlamofireObjectMapper에서 발생하는 오류들이 사라지고 빌드가 되었답니다~~!!
여기까지 제 벨로그 첫 IOS 개발이슈 해결 게시물이었습니다!
아직 왕초보라 많이많이 부족하지만 저처럼 처음 시작할때부터 빌드가 안되어 삽질로 몇시간을 날리는 개발자분들께 조금이라도 도움이 되었으면 좋겠습니당:)