2016-06-18 3 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. если вы пишете на быстро используемом лучшем SignalProducer для этого действия

Смежные вопросы