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];

}

これにより、配列内の最後の Dictionary の日付が表示されます。特定の辞書から日付を記録する方法さえわかりません。
と言う[_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];

}

すべての迅速な助けに感謝します!!

4

4 に答える 4

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

このメソッドはすべてのキーを出力します

于 2013-05-01T13:48:45.013 に答える
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]
}

値が表示されている部分

-(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]; 

}
于 2013-05-01T13:49:50.547 に答える
0

試す

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

    _myTextView.text = [NSString stringWithString:outputString];
}
于 2013-05-01T13:47:56.567 に答える