I am developing QRCode application, I am getting some problem to enable barcoding symbologies. I have one array in which I get all barcoding symbologies from websrvice data response, need to be as enable. I apply static code as follow and its working for me. But I want to make it dynamic. Following is my code :
Please help me to make it, dynamic. I tried many approaches but not getting proper solution.
Created two array :
NSMutableArray *enableSymbologies = [[[NSMutableArray alloc] init] autorelease]; // Data from webservice response
NSMutableArray *symbologiesToSet = [[[NSMutableArray alloc] init] autorelease]; // for enabling barcode symbology
for (int i =0 ; i < [enableSymbologies count] ; i ++)
{
if([[enableSymbologies objectAtIndex:i] isEqualToString:@"Code39"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_39]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"Code93"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_93]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"Code25I"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_25]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"Code25S"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_25]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"Code128"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_128]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"QR"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_QR]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"EAN+UPC"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_EANUPC]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"PDF"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_PDF]];
}
else if ([[enableSymbologies objectAtIndex:i] isEqualToString:@"CodaBar"])
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_CODABAR]];
}
else
{
[symbologiesToSet addObject:[NSNumber numberWithInt:MWB_CODE_MASK_QR]];
}
}
// My static approach, I want to make it dynamic
for (int i = 0; i < [symbologiesToSet count]; i++)
{
if([symbologiesToSet count] == 1)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue]);
}
else if([symbologiesToSet count] == 2)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue]);
}
else if([symbologiesToSet count] == 3)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue]);
}
else if([symbologiesToSet count] == 4)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue]);
}
else if([symbologiesToSet count] == 5)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue] | [[symbologiesToSet objectAtIndex:4] integerValue]);
}
else if([symbologiesToSet count] == 6)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue] | [[symbologiesToSet objectAtIndex:4] integerValue] | [[symbologiesToSet objectAtIndex:5] integerValue]);
}
else if([symbologiesToSet count] == 7)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue] | [[symbologiesToSet objectAtIndex:4] integerValue] | [[symbologiesToSet objectAtIndex:5] integerValue] | [[symbologiesToSet objectAtIndex:6] integerValue]);
}
else if([symbologiesToSet count] == 8)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue] | [[symbologiesToSet objectAtIndex:4] integerValue] | [[symbologiesToSet objectAtIndex:5] integerValue] | [[symbologiesToSet objectAtIndex:6] integerValue] | [[symbologiesToSet objectAtIndex:7] integerValue]);
}
else if([symbologiesToSet count] == 9)
{
MWB_setActiveCodes([[symbologiesToSet objectAtIndex:0] integerValue] | [[symbologiesToSet objectAtIndex:1] integerValue] | [[symbologiesToSet objectAtIndex:2] integerValue] | [[symbologiesToSet objectAtIndex:3] integerValue] | [[symbologiesToSet objectAtIndex:4] integerValue] | [[symbologiesToSet objectAtIndex:5] integerValue] | [[symbologiesToSet objectAtIndex:6] integerValue] | [[symbologiesToSet objectAtIndex:7] integerValue] | [[symbologiesToSet objectAtIndex:8] integerValue]);
}
}
#define MWB_CODE_MASK_NONE 0x00000000u
#define MWB_CODE_MASK_QR 0x00000001u
#define MWB_CODE_MASK_DM 0x00000002u
#define MWB_CODE_MASK_RSS 0x00000004u
#define MWB_CODE_MASK_39 0x00000008u
#define MWB_CODE_MASK_EANUPC 0x00000010u
#define MWB_CODE_MASK_128 0x00000020u
#define MWB_CODE_MASK_PDF 0x00000040u
#define MWB_CODE_MASK_AZTEC 0x00000080u
#define MWB_CODE_MASK_25 0x00000100u
#define MWB_CODE_MASK_93 0x00000200u
#define MWB_CODE_MASK_CODABAR 0x00000400u
#define MWB_CODE_MASK_ALL 0x00ffffffu