2
ResponseSerializer에 문제가 있습니다. 해결되지 않은 식별자가 나옵니다. 응답에 대해 선언되지 않은 유형이 나타납니다. 응답이 여러 유형으로 변경되었다는 것을 alamofire migration doc에서 읽었습니다. 그래서 변경해야 응답 -> DataReponse하지만이 난 단지처럼 하나 개의 인수 전달할 수 있다는 것을 의미합니다 : 더 중요한 것은 내가 확장 4 alamofire하는 마이그레이션 어떻게 어떻게 오류가 계속 이런 식으로받을 수 있습니다Alamofire 3-> Reponse & ResponseSerializer Swift 3.0의 문제
// What I have
Response(<ListWrapper, NSError>)
// What I should change it to?
DataResponse(<ListWrapper>)
을하고?
내 클래스 :
class List{
var idNumber: String?
var title: String?
var posterPath: String?
var release: String?
required init(json: JSON, id: Int?)
{
self.idNumber = json[ListFields.Id.rawValue].stringValue
self.title = json[ListFields.Title.rawValue].stringValue
self.posterPath = json[ListFields.PosterPath.rawValue].stringValue
self.release = json[ListFields.Release.rawValue].stringValue
}
class func setURL_APPEND(_ url: String)
{
URL_APPEND = url
}
// MARK: Endpoints
class func endpointForList() -> String
{
return URL_APPEND
}
fileprivate class func getListAtPath(_ path: String, completionHandler: @escaping (ListWrapper?, NSError?) -> Void) {
Alamofire.request(path)
.responseListArray { response in
if let error = response.result.error
{
completionHandler(nil, error)
return
}
completionHandler(response.result.value, nil)
}
}
class func getList(_ completionHandler: @escaping (ListWrapper?, NSError?) -> Void)
{
getListAtPath(List.endpointForList(), completionHandler: completionHandler)
}
}
// Problem is here:
// for ResponseSerializer I get an unresolved identifier
// and for Response I get an undeclared type
extension Alamofire.Request {
func responseListArray(_ completionHandler: @escaping (Response<ListWrapper, NSError>) -> Void) -> Self {
let responseSerializer = ResponseSerializer<ListWrapper, NSError> { request, response, data, error in
guard error == nil else
{
return .failure(error!)
}
guard let responseData = data else {
let failureReason = "Array could not be serialized because input data was nil."
let error = Alamofire.Error.errorWithCode(.dataSerializationFailed, failureReason: failureReason)
return .failure(error)
}
let JSONResponseSerializer = Request.JSONResponseSerializer(options: .allowFragments)
let result = JSONResponseSerializer.serializeResponse(request, response, responseData, error)
switch result {
case .success(let value):
let json = SwiftyJSON3.JSON(value)
let wrapper = ListWrapper()
var allList:Array = Array<List>()
wrapper.totalCount = json["favorite_count"].intValue
// print(json)
let results = json["items"]
// print(results)
for jsonList in results
{
//print(jsonList.1)
let list = List(json: jsonList.1, id: Int(jsonList.0))
if (list.posterPath == "")
{
continue
}
else
{
//print(movies.posterPath)
allList.append(list)
}
}
wrapper.results = allList
return .success(wrapper)
case .failure(let error):
return .failure(error)
}
}
return response(responseSerializer: responseSerializer,completionHandler: completionHandler)
}
}
를 내가 마지막 return 문에 오류가있어 "가 아닌 함수 타입의 값을 호출 할 수 없습니다 'NSHTTPURLResponse ? ' "? – Mat0
확장 프로그램으로 변경 Alamofire.DataRequest? 같은 문제가 있습니까? –
예, 이미 작동하지 않았습니다. Response & ResponseSerializer가 인식되지 않습니다. DataResponse 및 DataResponseSerializer도 변경하면 안됩니까? – Mat0