Swift 4“调用中的额外参数"迅捷 [英] Swift 4 "Extra argument in call" Rxswift

查看:38
本文介绍了Swift 4“调用中的额外参数"迅捷的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从 Swift 3 更新到 4,并且我正在使用 RxSwift,更新时我遇到错误调用中的额外参数",因为它现在期望类型元素.我尝试创建 (response, data) 元组,但仍然给我一个如图所示的错误.

I updated from Swift 3 to 4, and i am using RxSwift, When updated i came across an error "Extra argument in call" as it expects now of type element. I tried creating tuple of (response, data) but still gives me an error as shown.

     public static func deleteCrush(receiver: String, receiver_type: ProviderType) -> Observable<(HTTPURLResponse, NSArray)> {
    /*
     Delete crush identified by `id`

   */

    let parameters: Parameters = [
        "receiver": receiver,
        "receiver_type": receiver_type.rawValue
    ]

    print("deleteCrush paramreters: \(parameters)")

    return Observable.create({ (observer) -> Disposable in
        Alamofire.request(Router.deleteCrush(parameters: parameters))
            .rx
            .responseJSON()
            .debug()
            .subscribe(onNext: { (response, json) in
                print("deleteCrush response code: ", response.statusCode)
                if let data = json as? NSArray {
                    observer.on(.next(response, data))
                    observer.on(.completed)
                }
            }, onError: { (error) in
                print("deleteCrush error: ", error)
                observer.on(.error(error))
            }, onCompleted: nil, onDisposed: nil)
    })
}

错误:调用中有额外的参数.
尝试修复后:

     var tuple = (response, json)
                 if let data = json as? NSArray {
                    observer.on(.next(tuple))
                    observer.on(.completed)
                }

错误:

Event<(HTTPURLResponse, NSDictionary)>' 产生类型为 'Event' 的结果,但上下文需要 'Event<(HTTPURLResponse, NSDictionary)>

Event<(HTTPURLResponse, NSDictionary)>' produces result of type 'Event', but context expects 'Event<(HTTPURLResponse, NSDictionary)>

推荐答案

您似乎没有向事件传递正确的数据类型.

It just seems like you are not passing correct data type to your events.

或者简单地正确包装你的元组,

Either simply wrap your tuple properly,

observer.on(.next((response, data)))

或者为您的元素类型使用正确的元组类型,

Or then use proper tuple type for your Element type,

if let data = json as? NSArray {
   var tuple = (response, data)

   observer.on(.next(tuple))
   observer.on(.completed)
 }

请注意,您将元组设置为 tuple = (response, json) 根据您的方法返回类型,这是不正确的.

Note that you are setting tuple as tuple = (response, json) which is not correct according to your method return type.

这篇关于Swift 4“调用中的额外参数"迅捷的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆