正确地将标记项添加到nsmutablearray中

时间:2014-02-28 00:56:25

标签: ios iphone objective-c nsmutablearray uicollectionview

我正在尝试将所有cell.img.tag添加到我的nsmutable数组中。但是,我尝试了多种方法来执行此操作,例如for循环,但结果每次都不正确。我需要将每个单独的标签添加到NSMutableArray中。我将在下面发布我的代码给你一个想法。注意:这只是为了展示我正在做的事情,这不是我试图用来实现这项工作的方法。

  - (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
 {
    Cell *cell = (Cell*)[collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    NSString *string = [addressString valueForKey:@"number"];
    array = [[NSMutableArray alloc]init];
    cell.img.tag = string.intValue;
    [array addObject:[NSNumber numberWithInt:cell.img.tag]];
    return cell;
 }

编辑:当我使用for循环时,它将显示所有标签,但最终创建了多个阵列,每个阵列中的相同值重复多次,如此。 (1,1,1)(2,2,2)。

2 个答案:

答案 0 :(得分:1)

这一行是问题所在:

array = [[NSMutableArray alloc]init];

每次调用cellForItemAtIndexPath函数时,你基本上都在破坏数组并创建一个新的空数。

将该行移到代码中的其他位置(例如,在init方法中)。

答案 1 :(得分:0)

代码有两个问题。第一个是每次数据源获取一个单元格时的数组分配。我怀疑这不是你的实现,因为你说“这不是我试图用来使这个工作的方法。”

另一个问题,你一遍又一遍地看到同一个对象的原因是你获取NSString *string = [addressString valueForKey:@"number"];的模型部分对于传递给数据源的indexPath是不变的。

你有一系列地址吗?这会更有意义:

NSString *addressString = self.myArrayOfAddressesWichIsMyModel[indexPath.row];
NSString *string = [addressString valueForKey:@"number"];

现在字符串每次都会改变。重新检查数据源方法collectionView:numberOfItemsInSection:您可能正在回答一些数组的计数。这是您的cellForItem方法中必须由indexPath.row取消引用的数组。