// // KBBizCode.h // 服务端业务状态码与通用解析工具 // // 说明: // - 将所有常用的业务 code 集中到这里,避免在项目里到处写裸数字; // - 实际数值请按照你们后端的约定修改; // - 若后端新增/调整 code,只需要维护这一处即可。 // #ifndef KBBizCode_h #define KBBizCode_h #import #import "KBAPI.h" // 引入 SUCCESS_CODE/ERROR_CODE 等基础定义 /// 服务端业务状态码(按项目实际调整) typedef NS_ENUM(NSInteger, KBBizCode) { /// 通用成功(通常为 200,对应 SUCCESS_CODE) KBBizCodeSuccess = SUCCESS_CODE, /// token 失效/未登录(示例值;请按后端实际 code 修改) KBBizCodeTokenInvalid = 40101, /// token 过期(可选;如无区分可与 KBBizCodeTokenInvalid 复用) KBBizCodeTokenExpired = 40102, /// 账号在其他设备登录,被服务端强制下线 KBBizCodeAccountKicked = 40103, }; NS_ASSUME_NONNULL_BEGIN /// 从 JSON 响应中提取业务 code。 /// 支持常见字段:code / status / retcode(数字或字符串)。 /// 若未找到返回 NSNotFound。 static inline NSInteger KBBizCodeFromJSONObject(id obj) { if (![obj isKindOfClass:NSDictionary.class]) return NSNotFound; NSDictionary *d = (NSDictionary *)obj; id code = d[@"code"] ?: d[@"status"] ?: d[@"retcode"]; if ([code isKindOfClass:NSNumber.class]) { return ((NSNumber *)code).integerValue; } if ([code isKindOfClass:NSString.class]) { return ((NSString *)code).integerValue; } return NSNotFound; } /// 从 JSON 响应中提取错误文案,支持 message/msg/error。 static inline NSString *KBBizMessageFromJSONObject(id obj) { if (![obj isKindOfClass:NSDictionary.class]) return nil; NSDictionary *d = (NSDictionary *)obj; NSString *msg = d[@"message"] ?: d[@"msg"] ?: d[@"error"]; if (![msg isKindOfClass:NSString.class]) return nil; return msg; } NS_ASSUME_NONNULL_END #endif /* KBBizCode_h */