RQExerciseSubViewModel.m 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //
  2. // RQExerciseSubViewModel.m
  3. // JSJP
  4. //
  5. // Created by 张嵘 on 2021/8/12.
  6. //
  7. #import "RQExerciseSubViewModel.h"
  8. @interface RQExerciseSubViewModel ()
  9. //@property (nonatomic, readwrite, assign) RQExerciseType exerciseType;
  10. /// homePageCarType
  11. @property (nonatomic, readwrite, assign) RQHomePageCarType homePageCarType;
  12. /// homePageSubjectType
  13. @property (nonatomic, readwrite, assign) RQHomePageSubjectType homePageSubjectType;
  14. /// homeSubPageType
  15. @property (nonatomic, readwrite, assign) RQHomeSubPageType homeSubPageType;
  16. /// homeSubEditListType
  17. @property (nonatomic, readwrite, assign) RQHomeSubEditListType homeSubEditListType;
  18. @property (nonatomic, readwrite, copy) NSString *titleStr;
  19. @property (nonatomic, readwrite, assign) NSInteger number;
  20. @end
  21. @implementation RQExerciseSubViewModel
  22. #pragma mark - Public Method
  23. - (instancetype)initWithServices:(id<RQViewModelServices>)services params:(NSDictionary *)params {
  24. if (self = [super initWithServices:services params:params]) {
  25. // self.exerciseType = [params[RQExerciseTypeKey] integerValue];
  26. self.homePageCarType = [params[RQHomePageCarTypeKey] integerValue];
  27. self.homePageSubjectType = [params[RQHomePageSubjectTypeKey] integerValue];
  28. self.homeSubPageType = [params[RQHomeSubPageTypeKey] integerValue];
  29. self.homeSubEditListType = [params[RQHomeSubEditListTypeKey] integerValue];
  30. self.titleStr = params[RQViewModelIDKey];
  31. self.number = [params[RQViewCommonValueKey] integerValue];
  32. self.questionArr = params[RQViewModelUtilKey];
  33. self.subPageTypeKHMode = 0;
  34. if(params[RQHomeSubPageTypeKHModeKey]){
  35. self.subPageTypeKHMode = [params[RQHomeSubPageTypeKHModeKey] integerValue];
  36. }
  37. //读取用户记录-赋值
  38. if(self.homeSubPageType == RQHomeSubPageType_SequentialPractice){//只有顺序-记录
  39. NSArray *readList = [NYTools readExerciseListUserKey:RQ_USER_MANAGER.currentUser.outId carType:RQ_YDTQuestion_Module.carType subject:RQ_YDTQuestion_Module.subject exerciseType:RQ_Exercise_Module.currentExerciseType];
  40. NSLog(@"readList=%@",readList);
  41. if(readList.count>0){ //遍历用户做的题目
  42. dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
  43. for (NSDictionary *item in readList) {
  44. NSInteger ID = [item[@"ID"] unsignedIntValue];//题目id
  45. NSInteger type = [item[@"type"] unsignedIntValue];//题目类型
  46. NSInteger answerResultsType = [item[@"answerResultsType"] unsignedIntValue];//是否做对
  47. NSArray *userAnswer = item[@"userAnswer"];//用户选项
  48. //查找对应题目
  49. NSArray *filteredArray = [self.questionArr filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"ydtQuestionModel.ID == %d", ID]];
  50. if (filteredArray.count > 0) {
  51. RQExerciseModel *exerciseModel = filteredArray.firstObject;
  52. exerciseModel.answerResultsType = answerResultsType;
  53. exerciseModel.userAnswer = userAnswer;
  54. if (exerciseModel.answerResultsType == RQAnswerResultsType_Correct) {
  55. if (![RQ_Exercise_Module.correctArr containsObject:exerciseModel]) {
  56. NSMutableArray *corArr = RQ_Exercise_Module.correctArr.mutableCopy;
  57. [corArr addObject:exerciseModel];
  58. RQ_Exercise_Module.correctArr = corArr.copy;
  59. }
  60. } else if (exerciseModel.answerResultsType == RQAnswerResultsType_Error) {
  61. if (![RQ_Exercise_Module.errorArr containsObject:exerciseModel]) {
  62. NSMutableArray *errArr = RQ_Exercise_Module.errorArr.mutableCopy;
  63. [errArr addObject:exerciseModel];
  64. RQ_Exercise_Module.errorArr = errArr.copy;
  65. }
  66. }
  67. }
  68. }
  69. // 任务完成后,切换回主线程更新UI或执行其他操作
  70. dispatch_async(dispatch_get_main_queue(), ^{
  71. NSLog(@"Task completed, updating UI on main thread...");
  72. // 在这里可以更新UI,比如刷新界面等
  73. });
  74. });
  75. ///
  76. }
  77. }
  78. }
  79. return self;
  80. }
  81. - (void)initialize {
  82. [super initialize];
  83. self.title = @"";
  84. ///配置数据
  85. [self rq_configureData];
  86. }
  87. #pragma mark - PrivateMethod
  88. - (void)rq_configureData {
  89. }
  90. @end