使用NSString显示数组内容

时间:2012-02-06 21:45:50

标签: objective-c ios uiimage nsarray uilabel

我已经加载了一个数组:

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 个答案:

答案 0 :(得分:2)

图像的文件名未存储在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]];

答案 1 :(得分:0)

有效地使用字符串格式的%@只能调用对象的description方法。您看到的十六进制值只是对象指针的值 - 这是NSObject的description方法的默认实现。

请注意,对于NSString对象,description方法返回...您猜对了 - NSString对象本身。

在您的情况下,要显示图像名称,您必须保留它们,因为看起来UIImage的description不会返回图像名称。

您还可以创建一个记住名称的UIImage子类,但不确定它是否值得麻烦。