IOS 用组件化映射的关系表维护列表(后台下发不同的字段,创建不同的类的优化)

问题:根据后台下发不同的字段,来创建和跳转不同的类(比如支付宝动态菜单的跳转)

**方案:**这里考虑register的形式,维护一份列表

原来笨拙的处理方式,不容易维护,后期要增加控制类getSTVcForKey:(NSString *)aKey 这个方法还要动

+ (BaseViewController *)getSTVcForKey:(NSString *)aKey
{

    if ([aKey isEqualToString:@"和后台规定好的字段"]) {
    OneViewController *vc = [[OneViewControlle alloc] init];
//        return vc;
    }   else if ([aKey isEqualToString:@"和后台规定好的字段"]) {
    TwoViewController *vc = [[TwoViewControlle alloc] init];
//        return vc;
    }
等等。。还有很多这样的类
    return vc;
}

优化:这里考虑register的形式,维护一份映射的列表
key:和后台约定好的字段
Value:控制器

代码:

维护一张映射关系表,后续需要增加或者改动在这增加
#import "OneViewController.h"
#pragma mark - key
NSString * const kOne = @"和后台约定的字段";

static NSDictionary *getTrade(void)
{
    NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithCapacity:1];
    //注意一定用,类转化为字符串的方式,这样减少出错率
    [dict setValue:NSStringFromClass([OneViewController class]) forKey:kCMBCSafeTool_SET];
   等等
    return dict;
}

const struct ModuleIdUtil  ModuleIdUtil = {
    
    .getTrade = getTrade
};

更改后的:

+ (BaseViewController *)getSTVcForKey:(NSString *)aKey
{
    // 这里考虑register的形式,维护一份安全工具列表
    
    NSString *modID = aKey;

    NSString *className = 通过key 查找到相对应的Value;
    //找到字符串,在转化为类名
    Class safeToolVCClass = NSClassFromString(className);
    CMBCSafeToolBaseViewController *vc = [[safeToolVCClass alloc] init];
    [vc setCurSafeToolType:aKey];

这里如果在创建一个类的时候需要穿字符串给不同的类,父类添加一个方法,子类去重写父类的方法,其实这里还有改进,不要用继承,用protocol会更好

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值