0

我有一个NSMutable包含一些对象的数组,我想将这些对象以不同数组的形式存储到一个不同的 Mutable 数组中。

例如:我有一个名为 sessionArrayType4 的数组,其中包含这些对象。

"New Attendee Reception",
"Attendee Reception",
"Banquett",
"Tour and BBQ" 

我想存储在另一个名为 globalSessionArray 的可变数组中,我期待结果如下所示。

(("New Attendee Reception"), ("Attendee Reception"), (Banquett), (Tour and BBQ))

这是我的代码:

if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
{
    for (int i =0; i< [self.sessionArrayType4 count]; i++)
    {
        if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
        {
            [self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
            self.rowCount = self.rowCount + 1;
        }
        else
        {
            [self.sessionRowArray removeAllObjects];
            self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
            [self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];

            [self.globalSessionArray addObject:self.sessionRowArray];

        }
    }
}

但我得到的输出是这样的:

((Tour and BBQ), (Tour and BBQ), (Tour and BBQ), (Tour and BBQ))

4

3 回答 3

1

您将不得不为 for 循环的每次迭代将您的值分配/初始化到一个对象中,否则它将不断地停留在内存中并覆盖自身。

if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
{
    NSArray *
    for (int i =0; i< [self.sessionArrayType4 count]; i++)
    {
        NSObject *myNewObject = [[NSObject alloc] init];
        if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
        {
            myNewObject = [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"];
            [self.sessionRowArray addObject: myNewObject];
            self.rowCount = self.rowCount + 1;
        }
        else
        {
            [self.sessionRowArray removeAllObjects];
            //NSLog(@"%@",self.sessionRowArray);
            self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
            myNewObject = [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
            [self.sessionRowArray addObject:myNewObject];
            // NSLog(@"%@",self.sessionRowArray);
            [self.globalSessionArray addObject:self.sessionRowArray];
            // NSLog(@"%@",self.globalSessionArray);
        }
    }
}
于 2013-05-07T13:06:32.120 回答
1

您需要在 for 循环中分配一个临时数组以获取最终的数组数组。

代码非常混乱,但您可以像下面这样修改以获得正确的结果:

    if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])
    {
         for (int i =0; i< [self.sessionArrayType4 count]; i++)
         {
             if(self.displayTime == [[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"start_time"])
         {
        [self.sessionRowArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
        self.rowCount = self.rowCount + 1;
    }
     else
     {
         [self.sessionRowArray removeAllObjects];
         NSMutableArray* tempArray = [[NSMutableArray alloc] init];
        //NSLog(@"%@",self.sessionRowArray);
        self.displayTime = [[self.sessionArrayType4 objectAtIndex:i] valueForKey:@"start_time"];
        [tempArray addObject:[[self.sessionArrayType4 objectAtIndex:i]valueForKey:@"session_name"]];
        // NSLog(@"%@",self.sessionRowArray);
        [self.globalSessionArray addObject:tempArray];
        // NSLog(@"%@",self.globalSessionArray);
    }
于 2013-05-07T13:10:15.743 回答
0

1)

if(self.pickerSelectedRow == [self.typePickerArray objectAtIndex:3])

这个表达式和类似的表达式看起来不正确,因为左边的值看起来像 int 或 NSInteger,右边的值是 NSObject。如果它们都是 NSObject,则使用 isEqual 代替。

2)

sessionArrayType4

这是正确的,但没有认真的程序员将这样的名称用于变量。

3)由于代码不完整和大量 NSLog 调用,很难理解你想要什么。您还添加了与前一部分代码特别不兼容的 JSON 代码。

所以先编辑你的代码

于 2013-05-07T12:58:18.630 回答