NSArray in NSArray do not return the image I want

Posted by Tibi on Stack Overflow See other posts from Stack Overflow or by Tibi
Published on 2010-05-11T20:02:06Z Indexed on 2010/05/11 20:04 UTC
Read the original article Hit count: 485

Hi there,

I've got a code snippet here that I can't make working.

NSUInteger i;
//NSMutableArray *textures = [[NSMutableArray alloc] initWithCapacity:kNumTextures];
//NSMutableArray *texturesHighlighted = [[NSMutableArray alloc] initWithCapacity:kNumTextures];

NSMutableArray *textures= [[NSMutableArray alloc] init];


for (i = 1; i <= kNumTextures; i++)
{
    NSString *imageName = [NSString stringWithFormat:@"texture%d.png", i];
    NSString *imageNameHighlighted = [NSString stringWithFormat:@"texture%d_select.png", i];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImage *imageHighlighted = [UIImage imageNamed:imageNameHighlighted];
    //NSArray *pics = [[NSArray alloc] initWithObjects:(UIImage)image,(UIImage)imageHighlighted,nil];
    NSArray *pics = [NSArray arrayWithObjects:image,imageHighlighted,nil];
    [textures addObject:pics];
    [pics release];
}

//select randomly the position of the picture that will be represented twice on the board
NSInteger randomTexture = arc4random()%([textures count]+1);

//extract image corresponding to the randomly selected index
//remove corresponding pictures from textures array
NSArray *coupleTexture = [textures objectAtIndex:randomTexture];
[textures removeObjectAtIndex:randomTexture];

//create the image array containing 1 couple + all other pictures
NSMutableArray *texturesBoard = [[NSMutableArray alloc] initWithCapacity:kNumPotatoes];

[texturesBoard addObject:coupleTexture];
[texturesBoard addObject:coupleTexture];
[coupleTexture release];

NSArray *pics = [[NSArray alloc] init];
for (pics in textures)  {
    [texturesBoard addObject:pics];
}
[pics release];

//shuffle the textures
//[texturesBoard shuffledMutableArray];

//Array with masks
NSMutableArray *masks= [[NSMutableArray alloc] init];

for (i = 1; i <= kNumMasks; i++)
{
    NSString *maskName = [NSString stringWithFormat:@"mask%d.png", i];
    UIImage *mask = [UIImage imageNamed:maskName];
    //NSArray *pics = [[NSArray alloc] initWithObjects:mask,nil];
    [masks addObject:mask];

    //[pics release];
    [maskName release];
    [mask release];
}

//Now mask all images in texturesBoard
NSMutableArray *list = [[NSMutableArray alloc] init];
for (i = 0; i <= kNumMasks-1; i++)
{
    //take on image couple from textures
    NSArray *imgArray = [texturesBoard objectAtIndex:i];
    UIImage *mask = [masks objectAtIndex:i];

    //mask it with the mask un the array at corresponding index
    UIImage *img1 =(UIImage *) [imgArray objectAtIndex:0];
    UIImage *img2 =(UIImage *) [imgArray objectAtIndex:1];
    UIImage *picsMasked = [self maskImage:(UIImage *)img1 withMask:(UIImage *)mask];
    UIImage *picsHighlightedMasked = [self maskImage:(UIImage *)img2 withMask:(UIImage *)mask];
    //Init image with highlighted status
    TapDetectingImageView *imageView = [[TapDetectingImageView alloc] initWithImage:picsMasked imageHighlighted:picsHighlightedMasked];
    [list addObject:imageView];
}

The problem here is that : img1 and img2, are not images but rather NSArray with multiple entries. Ican't figure why... dos any fresh spirit here could provide me with some clue to fix.

maaany thanks.

© Stack Overflow or respective owner

Related posts about iphone-sdk-3.0

Related posts about nsarray