2015-08-20 4 views
0

Я пытаюсь получить доступ ко всем своим значениям NSDictionary после вызова метода, который устанавливает мои словарные статьи. По какой-то причине после того, как я вызываю метод и пытаюсь выйти из всех моих элементов, он возвращает только один элемент, а также последний элемент в словаре.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

Непонятно, что вы хотите. Вы используете одни и те же ключи для каждой записи, чтобы просто перезаписать предыдущую запись. Приведите пример waht, который вы хотите, только несколько привлеченных будут делать для примера. – zaph

ответ

3

В вашем словаре содержатся три ключа: fileName, imageWidth и imageHeight.

В setDestinationDictionary на каждом проходе через петлю for вы устанавливаете те же три ключа в том же словаре. Каждый проход заменяет значения, сохраненные в предыдущем проходе. Таким образом, в конце setDestinationDictionary словарь по-прежнему содержит только три клавиши, а значения - значения, установленные в последнем проходе через цикл.

Возможно, вы хотите создать массив словарей, по одному для каждого файла назначения. Или, возможно, вы хотите использовать имя файла в качестве ключа и сохранить размер как значение (в этом случае посмотрите +[NSValue valueWithSize:] и -[NSValue sizeValue]).

+0

Хорошо, все имеет смысл. Это устранило проблему. Я не слишком уверен, что вы имели в виду, сохраняя размер как значение, используя NSValue. Что-то не так с сохранением NSFloat? –