// // KBHomeVM.m // keyBoard // // Created by Mac on 2025/12/3. // #import "KBHomeVM.h" #import "KBCharacter.h" #import "KBNetworkManager.h" #import "KBHUD.h" #import "KBBizCode.h" @interface KBHomeVM () @property (nonatomic, copy, readwrite, nullable) NSArray *rankList; @end @implementation KBHomeVM - (void)fetchRankListWithParams:(nullable NSDictionary *)params needShow:(BOOL)needShow completion:(KBHomeRankCompletion)completion { if (needShow) { [KBHUD show]; } [[KBNetworkManager shared] GET:KB_API_CHARACTER_LIST parameters:params headers:nil autoShowBusinessError:NO completion:^(NSDictionary * _Nullable json, NSURLResponse * _Nullable response, NSError * _Nullable error) { if (needShow) { [KBHUD dismiss]; } if (error) { // 若是业务错误,优先展示服务端 message NSString *msg = KBBizMessageFromJSONObject(json) ?: error.localizedDescription ?: KBLocalized(@"Network error"); [KBHUD showInfo:msg]; if (completion) { completion(nil, error); } return; } id dataObj = json[KBData] ?: json[@"data"]; if (![dataObj isKindOfClass:[NSArray class]]) { NSError *e = [NSError errorWithDomain:KBNetworkErrorDomain code:KBNetworkErrorInvalidResponse userInfo:@{NSLocalizedDescriptionKey: KBLocalized(@"Invalid response")}]; [KBHUD showInfo:e.localizedDescription]; if (completion) { completion(nil, e); } return; } // 使用 MJExtension 将数组字典解析为模型数组 NSArray *list = [KBCharacter mj_objectArrayWithKeyValuesArray:(NSArray *)dataObj]; self.rankList = list; if (completion) { completion(list, nil); } }]; } @end