ios - NSMutableArray 不在图表上显示数据

标签 ios objective-c charts pfquery jbchartview

我正在尝试使用 JBChartView 和 Objective C 在图表上显示数据。当我尝试将数据从我的 NSDictionary 加载到在我的图表上显示数据的数组时,没有显示任何数据。但是,当我放置虚拟数据时它会显示,所以这是我的 NSDictionary 之间的问题。我的字典里有资料,我可以确认。这是我的代码:

 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

最佳答案

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];
    }];
}

试试这个。您应该始终在获取数据后重新加载表。您正在后台线程上检索数据,因此您应该在获取信息后重新加载表,紧接在 for 循环之后和 block 内部

关于ios - NSMutableArray 不在图表上显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573566/

相关文章:

ios - 执行相互调用的方法。全部在后台

objective-c - 调整 NSPanel 的大小以适应动态 NSMatrix 和按钮

c# - 删除/隐藏图例图表 excel

excel - 如何使用 VBA 自动扩展图表的范围?

ios - 从 MKPolyline 创建 MKMapView 区域

ios - Binary Rejected 用于导入 Health 工具包但未实现/使用该工具包

objective-c - 当我关闭调制解调器而保持路由器打开时,如何检测互联网连接?

java - 处理已启动的 JavaFX 应用程序

ios - 由于 titleForHeaderInSection 导致 iOS 性能降低

ios - WKwebview获取cookie的方法(IOS)