我有一个图像数组,我只想从数组中获取图像名称 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
答案 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"];