2012-02-06 3 views
0

Я нагруженные массив:Отображение содержимого массива с NSString

currentBackground=4; 
bgImages = [[NSArray alloc] initWithObjects: 
      [UIImage imageNamed:@"mystery_01 320x460"], 
      [UIImage imageNamed:@"mystery_02 320x460"], 
      [UIImage imageNamed:@"mystery_03 320x460"], 
      [UIImage imageNamed:@"mystery_04 320x460"], 
      [UIImage imageNamed:@"mystery_05 320x460"], 
      nil]; 

Теперь я хочу, чтобы отобразить в метке, отображаемый в данный момент имя файла изображения. Я подумал:

mainLabel.text = [NSString stringWithFormat:@"bgImages= %@",[bgImages objectAtIndex:currentBackground]]; 

будет работать, но все, что я получаю, это шестнадцатеричный код. У меня есть кнопка, которая прокручивает изображения очень красиво. Но когда я пытаюсь отобразить имя изображения, все, что я получаю, является тем, что, по моему мнению, является адресом, в котором находится имя.

ответ

2

Имя файла изображения не сохраняется в вашем объекте UIImage. В классе UIImage нет такого имущества. Вам нужно будет сохранить имена самостоятельно. Может быть, вы могли бы хранить имена файлов в массиве, и использовать этот массив как для извлечения изображений из файла, а затем искать имена файлов изображений позже:

imageFileNames = [[NSArray alloc] initWithObjects: 
          @"mystery_01 320x460", 
          @"mystery_02 320x460", 
          @"mystery_03 320x460", 
          @"mystery_04 320x460", 
          @"mystery_05 320x460", 
          nil]; 

Извлечение изображений (вы можете использовать для- в цикле для этого вместо этого, если вы хотите):

bgImages = [[NSArray alloc] initWithObjects: 
      [UIImage imageNamed:[imageFileNames objectAtIndex:0]], 
      [UIImage imageNamed:[imageFileNames objectAtIndex:1]], 
      [UIImage imageNamed:[imageFileNames objectAtIndex:2]], 
      [UIImage imageNamed:[imageFileNames objectAtIndex:3]], 
      [UIImage imageNamed:[imageFileNames objectAtIndex:4]], 
      nil]; 

Получить имя файла из вашего массива имен файлов:

mainLabel.text = [NSString stringWithFormat:@"bgImages= %@",[imageFileNames objectAtIndex:currentBackground]]; 
0

Использование %@ в вашем строчном формате эффективной Только вызов метода description объекта. Шестнадцатеричное значение, которое вы видите, - это просто значение указателя объекта - это реализация по умолчанию NSObject метода description.

Обратите внимание, что для объектов NSString возвращается метод description ... Вы предположили, что это сам объект NSString.

В вашем случае, чтобы отобразить имена изображений, вы должны их хранить, так как кажется, что UIImage description не возвращает имя изображения.

Вы также можете создать подкласс UIImage, который запоминает имя, но не уверен, что это стоит хлопот.