-1

我有一个 NSString,每次单击单元格时都会获取一个新值我想将此值添加到 NSMutableArray,我尝试了以下 [NSMutableArray addObject:NSString] 但这会在 NSMutableArray 的第一个索引值和单击下一个单元格,它将替换先前存储的值。我想保存所有的值。怎么做到呢?

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{


 UITableViewCell * cell = [tableView cellForRowAtIndexPath:indexPath];

NSIndexPath *tableSelection = [listingSet indexPathForSelectedRow];

if (cell.accessoryType == UITableViewCellAccessoryCheckmark) {
    cell.accessoryType = UITableViewCellAccessoryNone;

    [SelectedFiles removeObject:ID];
    NSLog(@"++++++Titlesss %@",SelectedFiles);



    [listingSet deselectRowAtIndexPath:tableSelection animated:YES];
} else { 

    cell.accessoryType = UITableViewCellAccessoryCheckmark;

          ID = [NSString stringWithFormat:@"%@",[[ParsedData valueForKey:@"ID"]objectAtIndex:indexPath.row]];

                   [SelectedFiles insertObject:ID atIndex:0];
    NSLog(@"%@",ID);
        NSLog(@"%@",SelectedFiles);







            [listingSet deselectRowAtIndexPath:tableSelection animated:YES];
}

}

这似乎不起作用。

编辑:我在某处读到我的数据保存在数组的第一个索引上,所以每次我在其中保存数据时我都需要增加数组的索引路径,但我无法弄清楚如何。

4

3 回答 3

2

看起来您每次都在创建一个新数组。你不应该那样做。尝试使您的数组成为视图控制器的属性。

@property (nonatomic, strong) NSMutableArray *stringElements;

在视图控制器的 init 方法中:

self.stringElements = [@[] mutableCopy];

当点击一个单元格时:

NSString *ID = [NSString stringWithFormat:@"%@", [[ParsedData 
valueForKey:@"ID"]objectAtIndex:indexPath.row]];
[self.stringElements addObject: ID];
于 2013-05-24T10:50:04.997 回答
1
NSMutableArray *FileID = [[NSMutableArray alloc]init];

或使用

   NSMutableArray *FileID = [[NSMutableArray alloc]initWithCapacity:3];

在范围之外声明它。这一行初始化并为数组提供一个新的有效内存,每次执行它都会创建数组。所以添加的对象总是保持在上面提到的这一行形成的新数组的第一个位置。

因此,解决方案只需将此行移出声明的位置。将其放入initviewdidLoadviewWillAppear方法中,就是这样。

addObject:方法将对象添加到NSMutableArrayso 中的下一个可用位置,这就足够了

创建一个实例变量

@interface ATTDownloadPage ()
{
    NSMutableArray * FileID;
}

- (void)viewDidLoad
{
    NSMutableArray *FileID = [[NSMutableArray alloc]initWithCapacity:3];
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *ID = [NSString stringWithFormat:@"%@", [[ParsedData valueForKey:@"ID"]objectAtIndex:indexPath.row]];
    [FileID addObject:ID];
}

编辑 从您的代码

    [SelectedFiles insertObject:ID atIndex:0];

导致问题。此行一直替换索引 0 处的对象,因此没有值添加到数组中试试这个代替上面的代码

 NSMutableArray *tempArray =[[NSMutableArray alloc]initWithCapacity:3];
        [tempArray addObject:ID];
        [tempArray addObjectsFromArray:SelectedFiles];
        SelectedFiles =[NSMutableArray arrayWithArray:tempArray];
于 2013-05-24T10:51:20.607 回答
0

使用这条线,您每次都在创建一个新数组。

NSMutableArray *FileID = [[NSMutableArray alloc]init];
于 2013-05-24T10:50:55.313 回答