如何将Table View单元格数据复制到NSMutableArray?

时间:2011-06-29 05:31:17

标签: iphone objective-c ios

我对iphone开发很新。我使用coredata创建了待办事项列表应用程序。所以,我的表视图动态更新。 我想将表视图行textlabels添加到NSMutable数组(这意味着row1文本标签到MutableArray的第一个索引位置,row2文本标签到Array的第二个索引位置)

这是我的表视图cellfor indexpath方法

- (UITableViewCell *)tableView:(UITableView *)theTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *HeroTableViewCell = @"HeroTableViewCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:HeroTableViewCell];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:HeroTableViewCell] autorelease];
    }
    NSManagedObject *oneHero = [self.fetchedResultsController objectAtIndexPath:indexPath];
    NSInteger tab = [tabBar.items indexOfObject:tabBar.selectedItem];
    switch (tab) {
        case kByName:
            cell.textLabel.text = [oneHero valueForKey:@"name"];
            cell.detailTextLabel.text = [oneHero valueForKey:@"secretIdentity"];
            break;
        case kBySecretIdentity:
            cell.detailTextLabel.text = [oneHero valueForKey:@"name"];
            cell.textLabel.text = [oneHero valueForKey:@"secretIdentity"];
        default:
            break;
    }


    //listData = [[[NSMutableArray alloc] init]autorelease];

    //if(indexPath.row==1){
             //[listData addObject: cell.textLabel.text];


    return cell;
}

评论说明我是如何尝试的。但我很难按我的意愿添加这些数据。 请帮帮我

3 个答案:

答案 0 :(得分:3)

将行listData = [[[NSMutableArray alloc] init]];置于cellForRowAtIndexPath:方法之外的某个位置,以便每次加载单元格时都不会重新分配。您可以将[listData addObject: [oneHero valueForKey:@"secretIdentity"]]; 行放在当前的位置。

编辑:您可以通过某种方法(例如 viewDidLoad:)更好地执行此操作,以确保将所有元素添加到数组中。

listData = [[[NSMutableArray alloc] init]];

for (NSManagedObject *oneHero in [self.fetchedResultsController allObjects]) {

    [listData addObject: [oneHero valueForKey:@"secretIdentity"]];
}

答案 1 :(得分:2)

首先:您应该从数据源中检索此数据。 第二:如果你想以你的方式实现它...那么确保你只分配一次这样的数组:

if(array == nil)
{
  array = [[NSMutableArray alloc] init];
}

这会产生很大的问题,因为多次调用cellForRow,每次重新加载都会导致重复添加。

最好的方法是在特定索引处使用oneHero对象来查找文本。

答案 2 :(得分:0)

这么简单,定义一个 NSMUtableArray * arr = [NSMutableArray alloc] init];

NSMutableArray *arr = [[NSMutableArray alloc] init];

然后在每种情况下添加开关

[arr addObject:@"Object You Want To Add"];