将Array1添加到Array2中,然后清除Array1并突然从Array2中消失

时间:2012-06-14 04:42:20

标签: iphone objective-c arrays

我在这里发生了这种奇怪的问题,每当if语句出现时,tempArray应该被添加到masterArray中。 (if语句完美运行并在应该触发时触发。)

我还需要每次都清除临时数组。

我的最终结果应该是一个masterarray,它包含它添加的每个数组。(意味着我在整个for循环中添加的所有临时数组)

相反,它只是每次都在索引0处将tempArray添加到MasterArray。

代码:

- (void)alpabetize:(NSArray *)arr {

self.tempArray = [[NSMutableArray alloc] init];
self.masterArray = [[NSMutableArray alloc] init];

for (int i = 0; i<[arr count]; i++) {

    NSString *currentString = [NSString stringWithFormat:@"%@", [[[arr objectAtIndex:i] valueForKey:@"first_name"] substringToIndex:1]];
    NSString *nextString = [NSString stringWithFormat:@"%@", [[[arr objectAtIndex:(i+1)] valueForKey:@"first_name"] substringToIndex:1]];

    [self.tempArray addObject:[arr objectAtIndex:i]];

    if (![currentString isEqualToString:nextString]) {

    [self.masterArray addObject:tempArray];
    [self.tempArray removeAllObjects];

    }

}

}

如果从先前添加到其他阵列的原始数组中删除所有对象。这是否也清除了其他阵列?这对我来说毫无意义。我的代码肯定有问题。有人可以帮助我发现我的错误吗?

感谢您的时间!

3 个答案:

答案 0 :(得分:3)

使用

[self.masterArray addObject:[tempArray copy]]; // retained copy of array

[self.masterArray addObject:[NSArray arrayWithArray:tempArray]]; // auto released copy of array

而不是

[self.masterArray addObject:tempArray];

在你的代码中,你要添加你在下一个语句中清除的同一个数组的引用。

答案 1 :(得分:2)

[self.masterArray addObjectsFromArray:tempArray];
[tempArray removeAllObjects];

答案 2 :(得分:1)

您确定要在循环中释放self.tempArray吗?一旦它进入你的IF条件,数组将为零,除非你再次调用这个方法,否则你将不会使用它。尝试在for循环后释放self.tempArray。