開發中遇到需寫入代碼中一些批量的數據時,數據結構設計不好,往往會造成維護問題。
如下:
1.用多個數組方式寫入一些相互有關係的數據就是很不明智的。下面代碼中3個數組中相同序號的對象是一一對應的。後期調整順序時就很麻煩,三個數組都要改。
NSArray * arrayRoleNames =@[@"全部職業",@"德魯伊",@"薩滿祭司",@"術士",@"牧師",@"法師",@"潛行者",@"戰士",@"聖騎士",@"獵人"];
NSArray * arrayRoleTypes =@[@(RoleTypeAllRole),@(RoleTypeDruid),@(RoleTypeShaman),@(RoleTypeWarlock),@(RoleTypePriest),@(RoleTypeMage),@(RoleTypeRogue),@(RoleTypeWarrior),@(RoleTypePaladin),@(RoleTypeHunter)];
NSArray * arrayRoleImages =@[[UIImageimageNamed:@"icon_deck_menu_all"],[UIImageimageNamed:@"icon_deck_menu_dly"],[UIImageimageNamed:@"icon_deck_menu_sm"],[UIImageimageNamed:@"icon_deck_menu_ss"],[UIImageimageNamed:@"icon_deck_menu_ms"],[UIImageimageNamed:@"icon_deck_menu_fs"],[UIImageimageNamed:@"icon_deck_menu_dz"],[UIImageimageNamed:@"icon_deck_menu_zs"],[UIImageimageNamed:@"icon_deck_menu_qs"],[UIImageimageNamed:@"icon_deck_menu_lr"]];
roleItems = [[NSMutableArrayalloc]init];
[arrayRoleNames enumerateObjectsUsingBlock:^(NSString * _Nonnull obj,NSUInteger idx,BOOL *_Nonnull stop) {
RoleItem * item = [RoleItemnew];
item.roleName = obj;
item.roleType = [[arrayRoleTypesobjectAtIndex:idx]integerValue];
item.roleIconImage = [arrayRoleImagesobjectAtIndex:idx];
[roleItemsaddObject:item];
}];
RoleItem * roleAll = [[RoleItemalloc]initWithName:@"全部職業"imageIcon:[UIImageimageNamed:@"icon_deck_menu_all"]roleType:RoleTypeAllRole];
RoleItem * roleDruid = [[RoleItemalloc]initWithName:@"德魯伊"imageIcon:[UIImageimageNamed:@"icon_deck_menu_dly"]roleType:RoleTypeDruid];
RoleItem * roleShaman = [[RoleItemalloc]initWithName:@"薩滿祭司"imageIcon:[UIImageimageNamed:@"icon_deck_menu_sm"]roleType:RoleTypeShaman];
RoleItem * roleWarlock = [[RoleItemalloc]initWithName:@"術士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_ss"]roleType:RoleTypeWarlock];
RoleItem * rolePriest = [[RoleItemalloc]initWithName:@"牧師"imageIcon:[UIImageimageNamed:@"icon_deck_menu_ms"]roleType:RoleTypePriest];
RoleItem * roleMage = [[RoleItemalloc]initWithName:@"法師"imageIcon:[UIImageimageNamed:@"icon_deck_menu_fs"]roleType:RoleTypeMage];
RoleItem * roleRogue = [[RoleItemalloc]initWithName:@"潛行者"imageIcon:[UIImageimageNamed:@"icon_deck_menu_dz"]roleType:RoleTypeRogue];
RoleItem * roleWarrior = [[RoleItemalloc]initWithName:@"戰士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_zs"]roleType:RoleTypeWarrior];
RoleItem * rolePaladin = [[RoleItemalloc]initWithName:@"聖騎士"imageIcon:[UIImageimageNamed:@"icon_deck_menu_qs"]roleType:RoleTypePaladin];
RoleItem * roleHunter = [[RoleItemalloc]initWithName:@"獵人"imageIcon:[UIImageimageNamed:@"icon_deck_menu_lr"]roleType:RoleTypeHunter];
self.roleItems =@[roleAll,roleDruid,roleShaman,roleWarlock,rolePriest,roleMage,roleRogue,roleWarrior,rolePaladin,roleHunter];