0

わかりましたので、次のように配列にデータを入力します。

NSMutableArray *participants;
for(int i = 0; i < sizeofpm; i++){
        NSDictionary *pmpart_dict = [pm_participants objectAtIndex:i];
        NSString *pmpart_email = [pmpart_dict objectForKey:@"email"];
        NSString *pmpart_email_extra = [@"pm" stringByAppendingString:pmpart_email];
        [participants setValue:pmpart_email forKey:pmpart_email_extra];
        NSLog(@"%@", participants);
    } 

sizeofpm は 1 です。つまり、count を使用しています。配列内の値の数を取得します。その配列に値を格納するにはどうすればよいですか? 機能していないようです。ありがとう!

4

4 に答える 4

2

配列を作成するのではなく、宣言するだけです。

NSMutableArray *participants = [NSMutableArray array];

その後、setValue:forKey:オブジェクトを配列に追加しません。必要なものaddObject::

[participants addObject:pmpart_email];

鍵はありません。

于 2012-07-24T13:51:44.963 に答える
2

最初に割り当てる必要があります。最初の行を次のように変更してみてください。

NSMutableArray* participants = [[NSMutableArray alloc] init];

また、配列にはキーがないため、を使用してもsetValue:forKey:機能しません。NSMutableArray

を使ってみてください[participants addObject:pmpart_email];

于 2012-07-24T13:51:48.620 に答える
1

NSMutableArray *participantsオブジェクトに値を割り当てる方法と同様に、値を割り当てていNSDictionaryます。値を割り当てるには、NSMutableArray呼び出すことができます- (void)addObject:(id)anObject

于 2012-07-24T13:54:16.937 に答える
0

したがって、他の回答の一部が述べているように、 の初期化子がありませんparticipants。ただし、 の使用setValue:forKey:、およびデータの構造化方法から判断すると、探しているのはNSMutableArrayではなく、NSMutableDictionaryです。配列は単なるリストですが、辞書はキーと値の関係を維持しており、それを活用しようとしているようです。

これを試して:

// some classes provide shorthand for `alloc/init`, such as `dictionary`
NSMutableDictionary *participants = [NSMutableDictionary dictionary];
for(int i = 0; i < sizeofpm; i++){
    NSDictionary *pmpart_dict = [pm_participants objectAtIndex:i];
    NSString *pmpart_email = [pmpart_dict objectForKey:@"email"];
    NSString *pmpart_email_extra = [@"pm" stringByAppendingString:pmpart_email];
    [participants setValue:pmpart_email forKey:pmpart_email_extra];
    NSLog(@"%@", participants);
} 

これにより、次の形式の辞書が得られます

{
    pmpart_email_extra: pmpart_email
}
于 2012-07-24T13:58:26.270 に答える