我在我的ViewModel中具有此功能,它返回一个信号,但内部块不起作用,我尝试添加突发点,但不会破裂。这是我的代码。
func executeLoginAPI() -> RACSignal {
var sessionDataTask: NSURLSessionDataTask = NSURLSessionDataTask()
return RACSignal.createSignal({
(subscriber: RACSubscriber!) -> RACDisposable! in
//I've added break point here but it doesn't break.
let manager: APIManager = APIManager.sharedInstance
let parameters: NSDictionary = ["email": self.email, "password": self.password]
sessionDataTask = manager.POST(APIAtlas.loginUrl, parameters: parameters, success: {
(task: NSURLSessionDataTask!, responseObject: AnyObject!) in
print(responseObject as! NSDictionary)
subscriber.sendNext(responseObject)
subscriber.sendCompleted()
}, failure: {
(task : NSURLSessionDataTask!, error: NSError!) in
/*if let task = task.response as? NSHTTPURLResponse {}*/
})!
let dispose: RACDisposable = RACDisposable(block: {
print("cancel request!")
sessionDataTask.cancel()
subscriber.sendCompleted()
})
return dispose
})
}
我像这样在我的ViewController上访问它
self.signinviewmodel.executeloginapi()
请给我一只手。谢谢!
,因为您仅创建了新信号但没有订阅。SignalProducer和Racsignal启动自己仅在订阅/开始后计算。
P.S。如果您在Swift上写了此操作的更好的SignalProducer