5

Alamofire 3 と最新バージョンの ObjectMapper ( https://github.com/Hearst-DD/ObjectMapperAlamofireObjectMapper ) を使用して( https://github.com/tristanhimmelman/AlamofireObjectMapper )を実装しようとしています。

は Alamofire 3 で動作するように更新されていないようAlamofireObjectMapperなので、自分でやろうとしています。

私はこのコードにたどり着きましたが、今は行き詰まっています。

ジェネリック タイプ T は、応答の完了ブロック内でアクセスできないようです。3 の変更ですかAlamofire、それとも Swift 2.1 の変更ですか?

これはエラーです:

'T?' 型の値を変換できません 期待される引数の型 '_?' に

  public func responseObject<T: Mappable>(queue: dispatch_queue_t?, keyPath: String?, completionHandler: (NSURLRequest, NSHTTPURLResponse?, T?, AnyObject?, ErrorType?) -> Void) -> Self {
    return response(queue: queue) { (request, response, data, error) -> Void in
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) {
            let JSONResponseSerializer = Request.JSONResponseSerializer(options: .AllowFragments)
            let result = JSONResponseSerializer.serializeResponse(request, response, data, error)
            let parsedObject = Mapper<T>().map(keyPath != nil ? result.value?[keyPath!] : result.value)

            dispatch_async(queue ?? dispatch_get_main_queue()) {
                completionHandler(self.request!, self.response, parsedObject, result.value ?? response.data, result.error) // Here it shows the error: Cannot convert value of type 'T?' to expected argument type '_?' 
            }
        }
    }

}
4

2 に答える 2

14

ちょうど解決策を見つけました。Xcode 7.1 ベータ コンパイラの問題のようです。「parsedObject」パラメーターに問題があり、次のパラメーターに誤りがありました。

completionHandler(self.request!, self.response, parsedObject, **result.value ?? data**, result.error)

そのため、同じエラーが発生した場合は、他のすべてのパラメーターが問題ないことを確認してください。

幸運を。

于 2015-10-02T14:46:35.673 に答える