RQTableViewModel.m 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //
  2. // RQTableViewModel.m
  3. // RQCommon
  4. //
  5. // Created by 张嵘 on 2018/11/23.
  6. // Copyright © 2018 张嵘. All rights reserved.
  7. //
  8. #import "RQTableViewModel.h"
  9. @interface RQTableViewModel ()
  10. /// request remote data cmd
  11. @property (nonatomic, readwrite, strong) RACCommand *requestRemoteDataCommand;
  12. @end
  13. @implementation RQTableViewModel
  14. - (void)initialize {
  15. [super initialize];
  16. self.page = 1;
  17. self.perPage = 20;
  18. self.dataTotalNum = 0;
  19. /// request remote data
  20. @weakify(self)
  21. self.requestRemoteDataCommand = [[RACCommand alloc] initWithSignalBlock:^(NSNumber *page) {
  22. @strongify(self)
  23. return [[self requestRemoteDataSignalWithPage:page.unsignedIntegerValue] takeUntil:self.rac_willDeallocSignal];
  24. }];
  25. /// 过滤错误信息
  26. [[self.requestRemoteDataCommand.errors
  27. filter:[self requestRemoteDataErrorsFilter]]
  28. subscribe:self.errors];
  29. }
  30. /// sub class can ovrride it
  31. - (BOOL (^)(NSError *error))requestRemoteDataErrorsFilter {
  32. return ^(NSError *error) {
  33. return YES;
  34. };
  35. }
  36. - (id)fetchLocalData {
  37. return nil;
  38. }
  39. - (NSUInteger)offsetForPage:(NSUInteger)page {
  40. return (page - 1) * self.perPage;
  41. }
  42. - (RACSignal *)requestRemoteDataSignalWithPage:(NSUInteger)page {
  43. return [RACSignal empty];
  44. }
  45. @end