如何在iOS中显示来自UIImage的NSArray的图像名称

时间:2011-08-11 18:13:47

标签: ios xcode

我有一个图像数组,我只想从数组中获取图像名称 e.g。

countryArray = [[NSMutableArray arrayWithObjects:
[UIImage imageNamed:@"india.png"],
[UIImage imageNamed:@"australia.png"],
[UIImage imageNamed:@"singapore.png"],
[UIImage imageNamed:@"america.png"],
nil] retain];


NSLog(@"image name at row %d is '%@'.",1,[countryArray objectAtIndex:1]);

它应该显示australia.png,而不是显示:

  

第1行的图像名称是UIImage:0x4b14910

1 个答案:

答案 0 :(得分:4)

一旦加载了图像,UIImage就不记得它的文件名,所以没有直接的方法来实现这个属性,例如myImage.name

一种选择是使用单独的NSMutableArray将名称存储为字符串。例如

countryStringArray = [[NSMutableArray arrayWithObjects:
@"india",
@"australia",
@"singapore",
@"america",
nil] retain];

countryImageArray = [[NSMutableArray arrayWithObjects:
[UIImage imageNamed:[countryStringArray objectAtIndex:0]],
[UIImage imageNamed:[countryStringArray objectAtIndex:1]],
[UIImage imageNamed:[countryStringArray objectAtIndex:2]],
[UIImage imageNamed:[countryStringArray objectAtIndex:3]],
nil] retain];

您甚至可以使用for循环来填充countryImageArray

第二种选择是使用NSMutableDictionary。这基本上是一回事,实际上你可以通过

实现它
countryDictionary = [NSDictionary dictionaryWithObjects:countryImageArray forKeys:countryStringArray];

但它在按名称检索特定国家/地区图像的清洁度方面具有一些优势。定义它的直接方法是

[countryDictionary setObject:[UIImage imageNamed:@"india.png"] forKey:@"india"];
[countryDictionary setObject:[UIImage imageNamed:@"australia.png"] forKey:@"australia"];
[countryDictionary setObject:[UIImage imageNamed:@"singapore.png"] forKey:@"singapore"];
[countryDictionary setObject:[UIImage imageNamed:@"america.png"] forKey:@"america"];