2

我有一个NSArray图像。图像名称为 A、B、C、D。我需要NSLog从数组中获取这些图像的名称

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

我必须用什么来代替这个?

4

6 回答 6

9

AUIImage不存储其文件名,如果您想跟踪创建它们的文件的名称,您也需要存储它们。

于 2012-07-18T09:55:35.390 回答
2

正如wattson所建议的那样,这是不可能的。为此,您需要使用另一个数组,您可以在其中保存imageName。否则,您可以将imageNameNSMutableDictionary保存为键,将Array对象保存为您以后可以阅读的对象。

于 2012-07-18T10:01:53.230 回答
2

如果您使用连接的图像名称覆盖数组的“描述”方法,它可以正常工作。

在这种情况下,NSLog 的工作方式是向每个对象询问一个描述自身的字符串,并将 -description 方法发送给对象。(注意:如果一个对象没有覆盖 description 方法,你会得到继承自 NSObject 的 -description 实现,这往往是这样的。参见 UsingTheDescriptionMethod

注意:描述方法只能用于调试目的

问候。

于 2012-07-18T10:30:49.253 回答
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"]);
于 2012-07-18T10:05:11.413 回答
1

你不能。如果 A、B、C、D 是实例变量,那么它们是您唯一可以控制的,例如

if ((UIImage*)[Array Objectatindex:1] == A) 
   bla-bla-bla you know that it's "A"

分配后,无法访问映像名称。

于 2012-07-18T09:56:41.930 回答
0

如果你想NSLog整体NSArray使用这个:

NSArray *_array = // your array
NSLog(@"array == %@", _array);

更新:#1

一种可用的方法如下,而不是仅用对象填充NSMutableArrayUIImage您应该将“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
}
于 2012-07-18T09:56:29.353 回答