我在我的项目中使用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);
}
答案 0 :(得分:1)
以下代码:
- (RACSignal *)executing
{
return RACObserve(self, executing);
}
毫无意义。您正在实现executing
访问器方法,以便在对象的executing
属性触发KVO事件时返回发送值的信号。但是,只要对象的executing
属性触发KVO事件,该值将始终是一个发送值的信号。