1

我正在从从服务器接收的数据中填充一个表格视图。数据是给定时间范围内的用户活动列表。一种这样的活动是“登录”。我不希望用这个字符串填充我的表格视图,但我不确定在填充我的表格视图时如何跳过它。

这是我填充单元格的方式

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{        static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    @try{

        NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
        NSString *action = [object valueForKey:@"theActionName"];

        if ([action isEqualtoString:@"Login"]) {

            return cell;
        }

        return cell;

    }@catch (NSException *ex) {
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    return cell;
    }
}

如您所见,我尝试使用return cell,但您可能知道在显示表格时它会给我一个空白单元格。我确信这有一行简单的代码,但我对我使用的搜索词一无所知。有人可以请教我!谢谢!

PS你可能会认为我没有在任何单元格中放置任何东西,但我提取了一堆代码来保持简短。

更新:感谢有关“isEqualtoString:”的提醒:“isEqual”一切正常,但我改变了它,因为我收到了很多这样做的建议。但这不是我要问的。

更清楚地说,如果我有一个包含以下术语的数组:视图、视图、登录、视图。当我的表格视图被填充时,我会有 4 个单元格说;查看,查看,登录,查看。我只是想忽略登录一词,以便我有 3 个单元格都表示视图。谢谢!

4

5 回答 5

1

尝试使用 if ([action isEqualToString:@"Login"])

于 2013-09-04T04:48:57.100 回答
1

当你想比较字符串时,你需要使用 this isEqualToString

更改此行

if ([action isEqualToString:@"Login"]) {

    return cell;
}
于 2013-09-04T04:50:02.297 回答
1

有很多方法可以做到这一点。

我相信UITabelView应该显示它的数据源(这里的数据源是self.fetchedResultsController)包含的内容。

您可以做的是创建另一个NSArrayself.fetchedResultsController包含此对象的对象。

尝试这个:

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

        for(int i = 0; i < self.fetchedResultsController.count ; i++)
        {
            NSManagedObject *object = [self.fetchedResultsController objectAtIndexPath:indexPath];
            NSString *action = [object valueForKey:@"theActionName"];

            if (![action isEqual:@"Login"])
            {
                [newSource addObject:action];
            }
        }

        [tableView reloadData];

现在使用 newSource 而不是 self.fetchedResultsController

你可能认为多用一个数组不好。但是相信它比使用带有条件的相同数组要容易得多。UITableView当您使用 indexpath 对类似删除对象执行某些操作时,您不必担心这种情况。

于 2013-09-04T04:50:28.420 回答
1

您使用了错误的函数来比较您的输入字符串和给定的数据变量。它们都是 NSString 对象,所以使用:

if([action isEqualToString:@"Login"])
{
    //enter your code here
}
于 2013-09-04T04:52:52.810 回答
0

@Ben:我假设您在使用 dequeueReusableCellWithIdentifier 时已通过 nib 注册了单元格。使您的表格视图内容为“动态原型”(您可以在表格视图的属性检查器中看到这一点)并将您的表格视图单元格样式更改为自定义(您可以在表格视图单元格的属性检查器中看到这个)。

于 2013-09-04T04:56:43.047 回答