2015-04-08 1 views
2

Приветствие. У меня есть NSmutableDictionary и хочу заполнить его.Population NSmutableDictionary error

- (IBAction)addCourse:(UIButton *)sender { 
    //NSMutableArray *keys = [[NSMutableArray alloc] init]; 
    NSMutableDictionary *contents = [[NSMutableDictionary alloc] init]; 

    //To add content and keys 

    NSInteger numRow=[picker selectedRowInComponent:kNumComponent];//0=1st,1=2nd,etc 
    NSInteger SeaRow=[picker selectedRowInComponent:kSeaComponent];//0=fall,1=spring,2=summer 
    NSInteger CourseRow=[picker selectedRowInComponent:kCourseComponent]; 

    NSString *num=Number[numRow]; 
    NSString *season=Season[SeaRow]; 
    NSString *course=Course[CourseRow]; 

NSString *AddKey=[NSString stringWithFormat:@"%@ %@",num,season]; 

    [contents setObject:[NSMutableArray arrayWithObjects:course, nil] forKey:AddKey]; 
    // NSLog(@"%@", key);//test key here, it works 
    NSLog(@"Dictionary: %@", [contents description]);//test dictionary here 

...} 

Вот, у меня есть кнопка, когда я нажимаю его, num и season и образуют ключ, и связанный с ним course будет добавить в словарь. Однако, когда я проверить его с

NSLog(@"Dictionary: %@", [contents description]); 

показать все содержание в словаре, только последняя запись в моем выборе показывается. Другими словами, при заполнении словаря предыдущие данные были переопределены более поздним. В чем проблема?

Обновление: Спасибо за совет Хавьера. Это исправляет эту проблему. Но теперь в новой ситуации только один ключ может содержать один контент. Следующий контент будет отменять старый, почему это так?

ответ

2

Содержание NSMutableDictionary * не сохраняется ни одним объектом вашего контроллера, и когда метод завершится, этот объект будет выпущен автоматически.

Попробуйте объявить содержание как свойство:

@property (nonatomic,strong) NSMutableDictionary *contents; 
+0

Спасибо за ваш ответ. Кажется, эта проблема решена. Но при использовании этого метода 1 ключ может содержать только один контент, содержимое будет переоценено, что делать, пожалуйста? – user4441082

+0

[содержание setObject: [NSMutableArray arrayWithObjects: course, nil] forKey: AddKey]; каждый раз задает новый массив, и это неправильно. Сначала нужно извлечь массив, связанный с ключом, затем добавить к этому массиву объект и, наконец, вызвать setObject: с этим массивом. –

+0

Спасибо за ваше терпение. Не могли бы вы показать мне пример? Большое спасибо. – user4441082