Вставка NSString в pathForResource NSBundle?

Это анимирует UIImageView в массиве ImpactDraw:

if ( ((impact *) [impactarray objectAtIndex:iv]).animframe == 70){
   ((UIImageView *) [impactdrawarray objectAtIndex:iv]).image =
          [UIImage imageWithContentsOfFile:
                         [[NSBundle mainBundle] pathForResource:@"explosionA71"
                                                         ofType:@"png"]];
}
if ( ((impact *) [impactarray objectAtIndex:iv]).animframe == 71){
       ((UIImageView *) [impactdrawarray objectAtIndex:iv]).image =
                       [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] 
                                        pathForResource:@"explosionA72"
                                                 ofType:@"png"]];
}

При этом ничего не появляется:

NSString *myString2 =
           [NSString stringWithFormat:@"A%d",
                     ((impact *) [impactarray objectAtIndex:iv]).animframe;

((UIImageView *) [impactdrawarray objectAtIndex:iv]).image =
                    [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] 
                                     pathForResource:(@"explosion%d", myString2)
                                              ofType:@"png"]];

Мой справочник по использованию NSString (пример)

NSString *myString23 = [NSString stringWithFormat:@"$%d", money];
moneylabel.text = myString23;

Как я могу использовать переменную в имени файла? Есть ли способ загрузить изображение в папку ресурсов по индексу? что-то вроде imageByIndex:currentanimationframe? Я ничего не видел в документации UIImage.

Ответ на комментарии:

   NSString *myString2 = [NSString stringWithFormat:@"A%d", ((impact *) [impactarray objectAtIndex:iv]).animframe];
  ((UIImageView *) [impactdrawarray objectAtIndex:iv]).image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"explosion%d", myString2] ofType:@"png"]];

и

                NSString *imagename = [NSString stringWithFormat:@"A%d", ((impact *) [impactarray objectAtIndex:iv]).animframe];
                UIImage *myImage = [UIImage imageNamed:imagename];

                ((UIImageView *) [impactdrawarray objectAtIndex:iv]).image = myImage;

Оба компилируются и запускаются, но изображение не показывает.


person user128526    schedule 24.06.2009    source источник
comment
Что вы пробовали? Сказать, что это не работает, не особенно полезно без каких-либо дополнительных объяснений.   -  person Jim Puls    schedule 25.06.2009
comment
Два блока кода ниже Ответ на комментарии - это то, что я пробовал. Оба компилируются и запускаются, но изображение не появляется.   -  person user128526    schedule 29.06.2009


Ответы (1)


Используйте +stringWithFormat:, как в вашем примере:

[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"explosion%d", myString2] ofType:@"png"];
person Jim Puls    schedule 24.06.2009
comment
NSString *myString2 = [NSString stringWithFormat:@A%d, ((impact *) [impactarray objectAtIndex:iv]).animframe]; ((UIImageView *) [impactdrawarray objectAtIndex:iv]).image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@explosion%d, myString2] ofType:@png]]; По-прежнему ничего не появляется (по-прежнему компилируется нормально) - person user128526; 25.06.2009