我在调用设置字典项的方法后尝试访问所有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个条目,但我只返回一个并且它是最后一个记录。
答案 0 :(得分:3)
您的词典包含三个键:fileName
,imageWidth
和imageHeight
。
在setDestinationDictionary
中,在每次通过for
循环时,您在同一个字典中设置相同的三个键。每次传递都会替换您在先前传递中存储的值。因此,在setDestinationDictionary
的末尾,字典仍然只包含三个键,值是最后一次循环中设置的值。
也许你想创建一个字典数组,每个目标文件一个。或者您可能希望使用文件名作为键并将大小存储为值(在这种情况下,请查看+[NSValue valueWithSize:]
和-[NSValue sizeValue]
)。