2013-05-01 1 views
3

У меня есть массив, который содержит несколько объектов NSMutableDictionary.Найти словарный ключ внутри и массив словарей

Каждый раз, когда текстовые поля заполняются и кнопка отправки нажата:

//The strings 
NSString *dateString = @"Date"; 
NSString *timeString = @"Time"; 
NSString *typeString = @"Type"; 

- (IBAction)addData:(id)sender { 

[_myDictionary setObject:_dateLabel.text forKey:dateString]; 
[_myDictionary setObject:_nNumber.text forKey:timeString]; 
[_myDictionary setObject:_type.text forKey:typeString]; 

[_myArray addObject:_myDictionary]; 

[self display] 
} 

Тогда я пытаюсь отобразить результаты в UITextView (в данном примере дата), но я не знаю, как ,

-(void)displayData{ 

    for (int i = 0; i<_myArray.count; i++) { 
     [_myArray objectAtIndex:i]; 
     outputString = [outputString stringByAppendingFormat:@"%@\n",[_myDictionary objectForKey:@"Date"]]; 

    } 
    _myTextView.text = [NSString stringWithFormat:@"%@",outputString]; 

} 

В результате получается дата последнего словаря в массиве. Я даже не могу понять, как записывать дату из определенного словаря.
Скажите [_myArray objectAtIndex:3] [_myDictionary objectForKey:@"Date"]. Как мне записать дату из 3-го индекса?

Надеется, что это имеет смысл

EDIT SOLUTION 

for (int i = 0; i<_myArray.count; i++) 
    { 

     outputString = [outputString stringByAppendingFormat:@"%@ %@\n",[[_myArray objectAtIndex:i]objectForKey:@"Date"], [[_myArray objectAtIndex:i]objectForKey:@"Time"]]; 

    } 
    _myTextView.text = [NSString stringWithFormat:@"%@",outputString]; 

} 

Спасибо за все быструю помощь !!

ответ

6
for(int i =0 ;i <[array count];i++) 
{ 
    NSLog(@"%@",[[array objectAtIndex:i]allKeys]); 
} 

этот метод будет печатать все ключи

+0

Да, это было то, что я искал. – Gulfer

0

Попробуйте

-(void)displayData{ 
    NSMutableString *outputString = [NSMutableString string]; 
    for (NSDictionary *dict in _myArray) { 
     [outputString stringByAppendingFormat:@"%@\n",dict[@"Date"]]; 
    } 

    _myTextView.text = [NSString stringWithString:outputString]; 
} 
1

Первое, что вы должны выделить новый словарь каждый раз вы добавляете новый объект в массив, в противном случае ваш словарь будет содержать только последнее значение

- (IBAction)addData:(id)sender 
{ 

    NSMutableDictionary *_myDictionary=[[NSMutableDictionary alloc] init]; 

    [_myDictionary setObject:_dateLabel.text forKey:dateString]; 
    [_myDictionary setObject:_nNumber.text forKey:timeString]; 
    [_myDictionary setObject:_type.text forKey:typeString]; 

    [_myArray addObject:_myDictionary]; 

    [self display] 
} 

Теперь часть whe re так отображают значение

-(void)displayData 
{ 
    for (int i = 0; i<_myArray.count; i++) 
    { 
     NSMutableDictionary *dictionary = [_myArray objectAtIndexPath:i]; 

     outputString = [outputString stringByAppendingFormat:@"%@\n",[dictionary objectForKey:@"Date"]]; 

    } 
    _myTextView.text = [NSString stringWithFormat:@"%@",outputString]; 

} 
0

Вы смешиваете экземпляр и локальные переменные и не обновляетесь в цикле правильно.

В идеале:

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

Это отличает ваши постоянные данные от ваших рабочих данных.

Попробуйте вместо этого:

NSString *dateString = @"Date"; 
NSString *timeString = @"Time"; 
NSString *typeString = @"Type"; 

- (IBAction)addData:(id)sender { 

    NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 

    [dict setObject:_dateLabel.text forKey:dateString]; 
    [dict setObject:_nNumber.text forKey:timeString]; 
    [dict setObject:_type.text forKey:typeString]; 

    [_myArray addObject:dict]; 

    [self display] 
} 


-(void)displayData{ 

    NSString *outputString = @""; 

    for (int i = 0; i<_myArray.count; i++) { 
     NSDictionary *dict = [_myArray objectAtIndex:i]; 
     outputString = [outputString stringByAppendingFormat:@"%@\n",[dict objectForKey:@"Date"]]; 
    } 

    _myTextView.text = outputString; 
} 

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

  • Нет связанных вопросов^_^