我目前正在ReactiveCocoa中迈出第一步,并且我经历了一些陡峭的学习曲线来理解这些原理.
无论如何这里是我已经提出的.
我将NSArray属性绑定到RACSignal,以便能够通过网络对传入的JSON数据做出反应.
- (void)updateRandomUserData { @weakify(self); RAC(self, users) = [[self fetchRandomUserData] doNext:^(NSDictionary *json){ @strongify(self); NSMutableArray *randomUsers = [NSMutableArray array]; for (NSDictionary *dict in json[@"data"]) { BKRandomUser *randomUser = [MTLJSONAdapter modelOfClass:[BKRandomUser class] fromJSONDictionary:dict error:nil]; [randomUsers addObject:randomUser]; } self.users = randomUsers; }]; }
信号创建如下所示:
- (RACSignal *)fetchRandomUserData { return [[RACSignal createSignal:^RACDisposable *(idsubscriber) { NSURLRequest *request = [NSURLRequest requestWithURL:url]; AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { [subscriber sendNext:JSON]; } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON, NSError *error) { [subscriber sendError:error]; }]; [operation start]; return [RACDisposable disposableWithBlock:^{ [operation cancel]; }]; }] doError:^(NSError *error) { NSLog(@"error: %@", [error description]); }];
}
现在,当Web服务不提供任何我希望对此做出反应的数据时.现在应用程序崩溃了以下声明,我真的不明白:
*由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'从名称收到错误:[[+ createSignal:] -doError:] -doNext:在关键路径"users"的绑定中:( null)'
我在这里错过了什么?
谢谢!