IOS) Podfile 'Alamofire' 버전 호환 문제 해결 일지

김다정·2020년 3월 26일
2

IOS

목록 보기
1/2
post-thumbnail

Android와 php를 주로 개발하다가 처음으로 어제 IOS Swift 개발을 시작했습니다.

같이 공부하는 다른 사람의 소스를 깃에서 클론받아

pod install

을 한 후 빌드를 하는데 자꾸 오류가 떴습니다.

Error Code

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 개발이슈 해결 게시물이었습니다!

아직 왕초보라 많이많이 부족하지만 저처럼 처음 시작할때부터 빌드가 안되어 삽질로 몇시간을 날리는 개발자분들께 조금이라도 도움이 되었으면 좋겠습니당:)

profile
예비 시니어 개발자

0개의 댓글