NSMutableArray Not Displaying Data On Chart

69 Views Asked by At

I am attempting to display data on a chart using JBChartView and Objective C. When I attempt to load data from my NSDictionary onto the Array that displays data on my chart no data is being shown. However when I put dummy data it displays so it is an issue between my NSDictionary. There is information in my Dictionary, I can confirm this. Here is my code:

 NSMutableArray *mutableChartData = [NSMutableArray array];
    if([PFUser currentUser]){
        PFQuery *query = [PFQuery queryWithClassName:@"Hours"];
        [query whereKey:@"user" equalTo:[PFUser currentUser]];
        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            for (PFObject *object in objects) {
                [mutableChartData addObject:object[@"Jan"]];
                [mutableChartData addObject:object[@"Feb"]];
                [mutableChartData addObject:object[@"Mar"]];
                [mutableChartData addObject:object[@"Apr"]];
                [mutableChartData addObject:object[@"May"]];
                [mutableChartData addObject:object[@"Jun"]];
                [mutableChartData addObject:object[@"Jul"]];
                [mutableChartData addObject:object[@"Aug"]];
                [mutableChartData addObject:object[@"Sep"]];
                [mutableChartData addObject:object[@"Oct"]];
                [mutableChartData addObject:object[@"Nov"]];
                [mutableChartData addObject:object[@"Dec"]];
            }
        }];
    }

    _chartData = [NSArray arrayWithArray:mutableChartData];
    _monthlySymbols = [[[NSDateFormatter alloc] init] shortMonthSymbols];
    [self.barChartView reloadData];

enter image description here

1

There are 1 best solutions below

4
On BEST ANSWER
NSMutableArray *mutableChartData = [NSMutableArray array];
if([PFUser currentUser]){
    PFQuery *query = [PFQuery queryWithClassName:@"Hours"];
    [query whereKey:@"user" equalTo:[PFUser currentUser]];
    [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
        for (PFObject *object in objects) {
            [mutableChartData addObject:object[@"Jan"]];
            [mutableChartData addObject:object[@"Feb"]];
            [mutableChartData addObject:object[@"Mar"]];
            [mutableChartData addObject:object[@"Apr"]];
            [mutableChartData addObject:object[@"May"]];
            [mutableChartData addObject:object[@"Jun"]];
            [mutableChartData addObject:object[@"Jul"]];
            [mutableChartData addObject:object[@"Aug"]];
            [mutableChartData addObject:object[@"Sep"]];
            [mutableChartData addObject:object[@"Oct"]];
            [mutableChartData addObject:object[@"Nov"]];
            [mutableChartData addObject:object[@"Dec"]];
        }
    _chartData = [NSArray arrayWithArray:mutableChartData];
    _monthlySymbols = [[[NSDateFormatter alloc] init] shortMonthSymbols];
    [self.barChartView reloadData];
    }];
}

Try this. You should always reload a table AFTER getting the data. You're retrieving your data on a background thread, therefore you should reload the table after you get information, right after the for loop and inside of block.