2016-06-18 31 views
0

我在我的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()

请给我一只手。谢谢!

回答

0

因为您只创建了新的信号但没有订阅。 SignalProducer和RACSignal仅在订阅/启动后才开始计算。

p.s.如果你在swift上用这个更好的SignalProducer写这个动作