我对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;
}
评论说明我是如何尝试的。但我很难按我的意愿添加这些数据。 请帮帮我
答案 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"];