iphone中的Nslog图像名称

时间:2012-07-18 09:51:11

标签: iphone objective-c ios arrays

我有NSArray图片。图像名称为A,B,C,D。我需要NSLog来自数组的这些图像的名称

NSLog(@"Name == %@", [Array objectAtIndex:1]);

我必须使用什么而不是这个?

6 个答案:

答案 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
}