NSDictionary只返回一个条目

时间:2015-08-20 17:07:18

标签: objective-c cocoa

我在调用设置字典项的方法后尝试访问所有NSDictionary值。出于某种原因,在我调用该方法并尝试注销所有项目之后,它只返回一个项目,它也是字典中的最后一项。

我在这里设置词典:

-(void)setDestinationDictionary {

destinationFileDict = [[NSMutableDictionary alloc] init];

NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *DestinationFiles = [fileManager contentsOfDirectoryAtPath:destinationPath error:nil];

for (NSString *file in DestinationFiles) {

    NSString *sourceFile = [[destinationPath stringByAppendingPathComponent:file] lastPathComponent];
    NSImage *image = [NSImage imageNamed:sourceFile];
    CGFloat imageWidth = [image size].width;
    CGFloat imageHeight = [image size].height;
    [destinationFileDict setObject:sourceFile forKey:@"fileName"];
    [destinationFileDict setObject:[NSNumber numberWithFloat:imageWidth] forKey:@"imageWidth"];
    [destinationFileDict setObject:[NSNumber numberWithFloat:imageHeight] forKey:@"imageHeight"];
}

我尝试调用该方法并记录字典的内容:

-(void)initiateCopy {

    [self setDestinationDictionary];
    NSLog(@"%@", destinationFileDict);
}

字典中应该总共有18个条目,但我只返回一个并且它是最后一个记录。

1 个答案:

答案 0 :(得分:3)

您的词典包含三个键:fileNameimageWidthimageHeight

setDestinationDictionary中,在每次通过for循环时,您在同一个字典中设置相同的三个键。每次传递都会替换您在先前传递中存储的值。因此,在setDestinationDictionary的末尾,字典仍然只包含三个键,值是最后一次循环中设置的值。

也许你想创建一个字典数组,每个目标文件一个。或者您可能希望使用文件名作为键并将大小存储为值(在这种情况下,请查看+[NSValue valueWithSize:]-[NSValue sizeValue])。