通过for循环使用键将数据添加到NSMUtableArray

时间:2012-05-29 11:36:58

标签: iphone objective-c ios ipad

我是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]);

我想将每个元素添加到其键中,例如 element(b_pag_id2)其键(b_pag_id)..等 这是正确的吗 ??或者怎么做? 考虑NSLog(@“数组大小:%d”,[myArray count]);给我1,我的元素的大小是14

3 个答案:

答案 0 :(得分:2)

在循环之前,你需要初始化aray

NSMutableArray *myArray = [NSMutableArray array];

在循环内部替换以下内容:

myArray = [NSMutableArray arrayWithObjects:theReqDictionary,nil];

[myArray addObject:theReqDictionary];

问题是你在每个循环迭代中创建一个包含1个字典的新数组。相反,您需要初始化数组并逐个添加值。

答案 1 :(得分:0)

每次通过循环,您都会为myArray创建一个只有一个元素的新数组。您应该在循环之前初始化一个空的NSMutableArray,然后只需将新对象添加到它,而不是使用arrayWithObjects:创建myArray ..

答案 2 :(得分: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"]);

谢谢!!!