我有NSArray
图片。图像名称为A,B,C,D。我需要NSLog
来自数组的这些图像的名称
NSLog(@"Name == %@", [Array objectAtIndex:1]);
我必须使用什么而不是这个?
答案 0 :(得分:9)
UIImage
不存储其文件名,如果要跟踪创建文件的名称,则还需要存储它们。
答案 1 :(得分:2)
正如瓦特森所说,这是不可能的。为此,您需要使用另一个阵列,您可以保存 imageName 。否则,您可以使用NSMutableDictionary
并将 imageName 保存为关键字,数组对象作为其对象,稍后您可以阅读。
答案 2 :(得分:2)
据我所知,您无法从UIImage
对象获取图像文件的名称。如果您确实想这样做,可以将名称与图像一起存储到NSDictionary
对象中:
NSArray * imageNames = [NSArray arrayWithObjects:@"A.png", @"B.png", @"C.png", nil];
NSMutableArray * array = [NSMutableArray arrayWithCapacity:[imageNames count]];
for (NSString * imageName in imageNames)
[array addObject:[NSDictionary dictionaryWithObjectsAndKeys:
[UIImage imageNamed:imageName], @"image", imageName, @"name", nil]];
然后你可以记录它:
NSLog(@"name = %@", [[array objectAtIndex:1] valueForKey:@"name"]);
答案 3 :(得分:2)
如果您使用连接的图像名称覆盖数组的“description”方法,它可以正常工作。
在这种情况下,NSLog通过向每个对象询问描述自身的字符串,将-description方法发送给对象来工作。 (注意:如果一个对象没有覆盖描述方法,你将获得从NSObject继承的-description实现,它往往就像。请参阅UsingTheDescriptionMethod
注意:描述方法只应用于调试目的
问候。
答案 4 :(得分:1)
你做不到。如果A,B,C,D是实例变量,它们是你唯一可以控制的东西,比如
if ((UIImage*)[Array Objectatindex:1] == A)
bla-bla-bla you know that it's "A"
分配后,无法访问图像名称。
答案 5 :(得分:0)
如果你想要NSLog
整个NSArray
使用这个:
NSArray *_array = // your array
NSLog(@"array == %@", _array);
更新:#1
可用的方法之一是以下内容,而不是仅使用NSMutableArray
对象填充UIImage
,您应该使用以下内容将{NSDictionary'对象添加到NSMutableArray
像这样的内容:
NSMutableArray *_array = [NSMutableArray array];
// you could put this part inside a loop if you like
NSString *_imagePathWithName = @"...";
UIImage *_newImage = [UIImage imageNamed:_imagePathWithName]; // when you load it from you application bundle
// or [UIImage imageWithContentsOfFile:_imagePathWithName]; // loading from other place
NSDictionary *_imageDictionary = [NSDictionary dictionaryWithObjectsAndKeys:_newImage, @"keyForUIImage", _imagePathWithName, @"keyForFullPathAndName", nil];
[_array addObject:_imageDictionary];
当您想要从数组中读取名称时
for (NSDisctionary *_dictionary in _array) {
UIImage *_image = (UIImage *)[_dictionary valueForKey:@"keyForUIImage"];
NSString *_fullPathWithName = (NSString *)[_dictionary valueForKey:@"keyForFullPathAndName"];
// do whatever you'd like with the images and the path
}