表视图numberOfRowsInSection返回0

时间:2014-03-11 22:02:35

标签: ios uitableview

我有一个表格视图,我希望填充存储在parse.com中的数据。

但是我的表视图中没有任何内容加载。我做了几个断点和NSLog,发现我的numberOfRowsInSection方法总是返回0。

这是我的代码:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{

        int num = [_totalDistance count];
        NSLog(@"num = %d", num);
        return [_totalDistance count];

}

activityTypeArray是从我在viewDidLoad方法中从parse.com收集的数据中填充的,这可能是问题所在吗?

这是填充_totalDistance的地方:

- (void)viewDidLoad
{
    _activityTypeArray = [NSMutableArray array];
    _totalDistance = [NSMutableArray array];
    PFQuery *activityQuery = [PFQuery queryWithClassName:@"Activities"];

    [activityQuery whereKey:@"triathlete" equalTo:[PFUser currentUser]];

    [activityQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            for (PFObject *object in objects) {

                ;
                NSString *activityType = [object objectForKey:@"activityType"];
                [_activityTypeArray addObject:activityType];

                NSString *totalDistance = [object objectForKey:@"totalDistance"];
                [_totalDistance addObject:totalDistance];
                NSLog(@" total distance %@", _totalDistance);
                int num = [_activityTypeArray count];
                NSLog(@"num = %d", num);
            }

        }
    }];


}

由于

2 个答案:

答案 0 :(得分:2)

修改代码以重新加载tableView数据。否则你的tableView不知道你有数据要显示。

   [activityQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        if (!error) {
            for (PFObject *object in objects) {

                ;
                NSString *activityType = [object objectForKey:@"activityType"];
                [_activityTypeArray addObject:activityType];

                NSString *totalDistance = [object objectForKey:@"totalDistance"];
                [_totalDistance addObject:totalDistance];
                NSLog(@" total distance %@", _totalDistance);
                int num = [_activityTypeArray count];
                NSLog(@"num = %d", num);

                // line added
                [self.tableView reloadData];
            }

        }
    }];

答案 1 :(得分:1)

您正在记录另一个值(_activityTypeArray计数)而不是您返回的结果(_totalDistance count)

所以NSLog语句无法帮助