ReactiveCocoa将值从Model发送到ViewController

时间:2015-05-11 10:52:53

标签: ios objective-c mvvm reactive-cocoa

我在我的项目中使用MVVM架构。在我的模型中,我有我的业务逻辑,从那里我称之为服务方法。我的服务中有信号实际上是观察一个属性:

- (RACSignal *)executing;
- (RACSignal *)executing
{
  return RACObserve(self, executing);
}

财产'执行'是NSNumber属性,我需要一直传递给viewController,以便在我的服务调用执行时显示ActivityBar。所以在我的viewModel中我有这个:

- (RACSignal *)executing
{
  return [[self.services getRetailers] executing];
}

我在ViewController中绑定它,如下所示:

RAC([UIApplication sharedApplication], networkActivityIndicatorVisible) = self.regWizardcontentViewModel.executing;

它不起作用。我是这个反应式编程的新手,所以我要问如何正确传递该信号。同时,在我的模型中,我有一个结果字典,我想用RAC将该字典传递给我的ViewModel,我不知道它是如何完成的。我一直在寻找并寻找答案。我已经被困在这里好几天了。

编辑:

- (void)search:(NSString *)countryCode
{
   manager = [Manager sharedManager];
   manager._delegate = self;
   [manager getRetailers:countryCode];
   self.executing = [NSNumber numberWithBool:YES];
}

- (void)manager:(Manager *)client didSuccesWithoutError:(id)responseObject
{
   self.retailer = responseObject;
   self.executing = [NSNumber numberWithBool:NO];
   NSLog(@"Loaded successfully: %@", self.retailer);
}

- (void)manager:(Manager *)client didFailWithError:(NSError *)error
{
   self.executing = [NSNumber numberWithBool:NO];
   NSLog(@"Error Retrieving %@", error);
}

1 个答案:

答案 0 :(得分:1)

以下代码:

- (RACSignal *)executing
{
  return RACObserve(self, executing);
}

毫无意义。您正在实现executing访问器方法,以便在对象的executing属性触发KVO事件时返回发送值的信号。但是,只要对象的executing属性触发KVO事件,该值将始终是一个发送值的信号。