RQCollectionViewModel.m 1.2 KB

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