我有一个NSArray
图像。图像名称为 A、B、C、D。我需要NSLog
从数组中获取这些图像的名称
NSLog(@"Name == %@", [Array objectAtIndex:1]);
我必须用什么来代替这个?
我有一个NSArray
图像。图像名称为 A、B、C、D。我需要NSLog
从数组中获取这些图像的名称
NSLog(@"Name == %@", [Array objectAtIndex:1]);
我必须用什么来代替这个?
AUIImage
不存储其文件名,如果您想跟踪创建它们的文件的名称,您也需要存储它们。
正如wattson所建议的那样,这是不可能的。为此,您需要使用另一个数组,您可以在其中保存imageName。否则,您可以将imageNameNSMutableDictionary
保存为键,将Array对象保存为您以后可以阅读的对象。
如果您使用连接的图像名称覆盖数组的“描述”方法,它可以正常工作。
在这种情况下,NSLog 的工作方式是向每个对象询问一个描述自身的字符串,并将 -description 方法发送给对象。(注意:如果一个对象没有覆盖 description 方法,你会得到继承自 NSObject 的 -description 实现,这往往是这样的。参见 UsingTheDescriptionMethod
注意:描述方法只能用于调试目的
问候。
据我所知,您无法从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"]);
你不能。如果 A、B、C、D 是实例变量,那么它们是您唯一可以控制的,例如
if ((UIImage*)[Array Objectatindex:1] == A)
bla-bla-bla you know that it's "A"
分配后,无法访问映像名称。
如果你想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
}