Отображение содержимого массива с помощью NSString - PullRequest
0 голосов
/ 07 февраля 2012

Я загрузил массив:

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 ]

2 голосов
/ 07 февраля 2012

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

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

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

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 голосов
/ 07 февраля 2012

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

Обратите внимание, что для объектов NSString метод description возвращает ... Как вы уже догадались - сам объект NSString.

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

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

...