0

私は iPhone が初めてです。NSMutableArray に要素を追加したいのですが、各要素の名前で、キーの MutableArray を作成し、次に Pages というオブジェクトから取得した要素の他の配列を作成します。

次のコードを書きました

NSMutableArray *myArray;


NSMutableArray *arrayKey = [[NSMutableArray alloc] initWithObjects:@"b_pag_id", @"b_pag_bo_id", @"b_pag_num", @"b_pag_note", @"b_page_mark", @"b_page_stop", @"b_pag_user_id", nil];

    for (int x=0; x<[pages count]; x++) {
        Pages *myPages = (Pages *)[self.pages objectAtIndex:x];

        NSString *b_pag_id2 = [NSString stringWithFormat:@"%d",myPages.b_pag_id];
        NSString *b_pag_bo_id2 = [NSString stringWithFormat:@"%d",myPages.b_pag_bo_id];
        NSString *b_pag_num2 = [NSString stringWithFormat:@"%d",myPages.b_pag_num];
        NSString *b_pag_note2 = myPages.b_pag_note;
        NSString *b_page_mark2 = [NSString stringWithFormat:@"%d",myPages.b_page_mark];
        NSString *b_page_stop2 = [NSString stringWithFormat:@"%d",myPages.b_page_stop];
        NSString *b_pag_user_id2 = [NSString stringWithFormat:@"%d",myPages.b_pag_user_id];

        NSMutableArray *arrayValue = [[NSMutableArray alloc] initWithObjects:b_pag_id2, b_pag_bo_id2, b_pag_num2, b_pag_note2, b_page_mark2, b_page_stop2, b_pag_user_id2, nil];

        NSDictionary *theReqDictionary = [NSDictionary dictionaryWithObjects:arrayValue forKeys:arrayKey];

        myArray = [NSMutableArray arrayWithObjects:theReqDictionary,nil];
    }

   NSLog(@"array size: %d", [myArray count]);

要素 (b_pag_id2) そのキー (b_pag_id) など、すべての要素をそのキーに追加したい..etc これは正しいですか?? またはこれを行う方法?? NSLog(@"配列サイズ: %d", [myArray カウント]); 私に1を与え、私の要素のサイズは14です

4

3 に答える 3

2

ループの前に、配列を初期化する必要があります

NSMutableArray *myArray = [NSMutableArray array];

ループ内で以下を置き換えます。

myArray = [NSMutableArray arrayWithObjects:theReqDictionary,nil];

[myArray addObject:theReqDictionary];

問題は、ループの反復ごとに 1 つの辞書を使用して新しい配列を作成していることです。代わりに、配列を初期化し、値を 1 つずつ追加する必要があります。

于 2012-05-29T12:01:14.803 に答える
0

ここに簡単な例を示します。これがお役に立てば幸いです。このコードを参照してください:-

NSMutableArray *arrayValue = [[NSMutableArray alloc]initWithObjects:@"Value1",@"Value2",@"Value3", nil];
NSMutableArray *arrayKey = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];

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

for(int i=0;i<3;i++)
{
    [dic setObject:[arrayValue objectAtIndex:i] forKey:[arrayKey objectAtIndex:i]];
}

//and you can see this by printing it using nslog-

NSLog(@"%@",[dic valueForKey:@"1"]);

ありがとうございました!!!

于 2012-05-29T12:52:26.597 に答える
0

ループするたびに、myArray要素が 1 つしかない新しい配列を作成しています。ループの前に空の NSMutableArray を初期化し、arrayWithObjects:作成に使用する代わりに新しいオブジェクトを単純に追加する必要がありますmyArray

于 2012-05-29T11:42:37.280 に答える