Swift2 flatMap从未调用-ReactiveCocoa

Swift2 flatMap从未调用-ReactiveCocoa,swift2,reactive-programming,reactive-cocoa,Swift2,Reactive Programming,Reactive Cocoa,你好, 我对flatMap有问题,它从未调用过 我有两种方法。第一个(getApiUser)获取令牌,第二个(login)用户登录。登录方法需要getApiUser方法中的令牌 GetApiUser()工作正常。调用http请求并接收令牌 func getApiUser() -> SignalProducer<ApiUser, NoError>{ return SignalProducer<ApiUser, NoError> {[weak self] si

你好, 我对flatMap有问题,它从未调用过

我有两种方法。第一个(getApiUser)获取令牌,第二个(login)用户登录。登录方法需要getApiUser方法中的令牌

GetApiUser()工作正常。调用http请求并接收令牌

func getApiUser() -> SignalProducer<ApiUser, NoError>{

    return SignalProducer<ApiUser, NoError> {[weak self] sink, disposable in
        let parameters = [
            "login" : self!.loginName,
            "password" : self!.password
        ]

        Alamofire.request(.POST, self!.url, parameters: parameters)
            .responseJSON { response in
                if let JSON = response.result.value {
                    if let apiUser : ApiUser = decode(JSON) {
                        sink.sendNext(apiUser)
                        sink.sendCompleted()
                    }
                }
        }  
    }
}
func getApiUser()->SignalProducer{
返回信号发生器{[弱自]接收器,可一次性输入
设参数=[
“登录”:self!.loginName,
“密码”:self!.password
]
请求(.POST,self!.url,参数:parameters)
.responseJSON{中的响应
如果让JSON=response.result.value{
如果让apiUser:apiUser=decode(JSON){
sink.sendNext(apiUser)
sink.sendCompleted()
}
}
}  
}
}
登录使用getApiUser()接收令牌:

func login(login : String, password : String) -> SignalProducer<Driver, NoError>{
    let driver = _authorizator
        .getApiUser()
        .map{
            $0.token
        }
        .flatMap(FlattenStrategy.Latest){token in
            self.loginDriver(login, password: password, token: token)
        }

    return driver
}

//TODO: This method never called
private func loginDriver(login : String, password : String, token : String) -> SignalProducer<Driver, NoError>{

    return SignalProducer<Driver, NoError> {[weak self] sink, dis in
        let parameters = [
            "syslogin" : login,
            "syspassword" : password
        ]

        let headers = [
            "ExsysAuthenticateToken" : token
        ]

        Alamofire.request(.POST, self!._loginDriverUrl, parameters: parameters, headers: headers).responseJSON { response in
            if let JSON = response.result.value{
                if let driver : Driver = decode(JSON){
                    sink.sendNext(driver)
                    sink.sendCompleted()
                }
            }
        }

    }

}
func登录(登录名:String,密码:String)->SignalProducer{
让驱动程序=\u授权程序
.getApiUser()
.地图{
0.5美元代币
}
.flatMap(flattstrategy.Latest){token in
self.loginDriver(登录,密码:password,令牌:token)
}
返回驱动器
}
//TODO:从未调用此方法
private func loginDriver(登录:字符串、密码:字符串、令牌:字符串)->SignalProducer{
返回信号发生器{[弱自]接收器,dis in
设参数=[
“系统登录”:登录,
“系统密码”:密码
]
让标题=[
“ExsysAuthenticateToken”:令牌
]
请求(.POST,self!。\u loginDriverUrl,参数:参数,头:头)。responseJSON{response in
如果让JSON=response.result.value{
如果让驱动程序:驱动程序=解码(JSON){
sink.sendNext(驱动程序)
sink.sendCompleted()
}
}
}
}
}
我的错在哪里(谢谢你的帮助