2013-05-01 51 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"]。我如何記錄第三個索引的日期?

希望這是有道理

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 2013-05-01 14:07:38

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所以正在顯示的值

-(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. myArray的將是一個實例變量(比如你有它現在)。
  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; 
}