2014-04-20 3 views
0

У меня есть datepicker и UIBarButtonItem, когда UIBarButtonItem нажата, он вызывает метод добавления выбранной даты в NSMutableDictionary. Код показан ниже:Может только добавить один объект в NSMutableDictionary

diaryDateArr = [[NSArray alloc] initWithObjects:diaryDate, nil]; 
NSString *dateKeyStr = [NSString stringWithFormat:@"dateKey%d", dicDates.count+1]; 
diaryKeyStrArr = [[NSArray alloc] initWithObjects:dateKeyStr, nil]; 
dicDates = [[NSMutableDictionary alloc] initWithObjects:diaryDateArr forKeys:diaryKeyStrArr]; 
NSArray * allKeys = [dicDates allKeys]; 
for(NSString *key in [dicDates allKeys]) { NSLog(@"%@",[dicDates objectForKey:key]);} 
NSLog(@"Count : %d", [allKeys count]); 

Однако, все это, казалось бы, работает, пока я не сосчитать, сколько ключей находятся в пределах NSMutableDictionary и счетчик возвращается как 1, даже если я нажмите кнопку дважды в двух разных дат, которые должны теоретически (или, по крайней мере, как мне хотелось бы), следует добавить еще одну дату, выбранную в подборщике даты, составляющую счет 2. но она никогда не меняется с 1

Как объекты и ключи не помещаются в словарь?

С уважением

+0

Почему, по вашему мнению, ключевое число 1 означает 0 элементов? – user1118321

+0

хорошо пункт. Я не уверен, почему я поместил эту ошибку, я отредактирую ее. – user3547147

ответ

1

Count возвращает количество записей в словаре - один. Вы можете получить к нему доступ: [dicDates valueForKey:diaryKeyStrArr];

Если вы нажмете кнопку во второй раз, ваш словарь будет установлен на новый. Попробуйте это возможно:

if (!dicDates) { 
    dicDates = [[NSMutableDictionary alloc] initWithObjects:diaryDateArr forKeys:diaryKeyStrArr]; 
} else { 
    dicDates[dateKeyStr] = diaryDateArr; 
} 
+0

Правильно, так что добавляется запись. Я вижу, но почему добавляется только одна запись, когда я нажимаю кнопку, а не 1 запись 2 записи 3 элемента входа и т. Д. – user3547147

+1

Похоже, вы создаете новый NSDictionary каждый раз, когда вызывается метод - это означает, что старый переопределяется. Если это так, переместите словарь как @property, например '@property (nonatomic, strong) NSMutableDictionary * dicDates', а затем получите доступ к нему как _dicDates в вашем методе. –

+0

Да, я думал, что что-то было переписано просто не самим словарем, а объектом внутри словаря. Странно то, что я уже установил его как @property (неатомный, сильный) NSMutableDictionary * dicDates; Затем синтезируется – user3547147

Смежные вопросы