iOS добавление динамических значений в массив

Я хочу добавить динамические значения UIImage в массиве, который инициализирован в цикле for, поэтому я создал NSMutableArray сначала установить объект в цикле for, а затем попытаться получить значения из него. Пожалуйста, вы можете посмотреть, где я иду не так и что лучше всего подходит при добавлении динамических значений.

NSMutableDictionary * dic= [[NSMutableDictionary alloc]init];
NSMutableArray *cImages = [[NSMutableArray alloc]init];

for(int i=0; i<5; i++) {
    NSString * imageKey= [NSString stringWithFormat:@"image%i",i+1];              

    NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString: [[results objectAtIndex:i]valueForKey:imageKey]]];
    UIImage *imageOne = [UIImage imageWithData:imageData];
    [dic setObject:imageOne forKey:imageKey];

}

for (NSString *key in dic) {
    NSString *sprite = [dic objectForKey:key];
    //adding below to the array
    [cImages addObject:sprite];             
}

1 ответ

Решение

Что плохого в том, чтобы просто добавить UIImage в изменяемый массив?

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

for(int i = 0; i < 5; i++)
{
    NSString *imageKey= [NSString stringWithFormat:@"image%i", i+1];
    UIImage *imageToAdd = [UIImage imageNamed:imageKey];
    [cImages addObject:imageToAdd];
}

// Using the images
for (UIImage *image in cImages)
{
    // Do whatever u want with each image.
}

Если вам действительно нужно использовать словарь для доступа к UIImage по именам "image1, image2" и т. Д., Вы можете сделать это:

NSDictionary *dict = [[NSDictionary alloc] init];
for (int i = 0; i < 5; i++)
{
    NSString *imageKey = [NSString stringWithFormat:@"image%i", i+1];
    UIImage *image = [UIImage imageNamed:@"nameOfImageFile.png"];
    [dict setObject:image forKey:imageKey];
}

// Now you can access the UIImage values by their names (image1,image2,image3,image4,image5)
UIImage *imageToUse = [dict valueForKey:@"image1"];

(не проверял это, но это довольно стандартно).

Другие вопросы по тегам