没有在UITableView中重新加载正确的数据

时间:2013-12-29 21:50:17

标签: ios objective-c json uitableview xcode4.6

我编写此代码以重新加载UItableView,其中的事件与当前日期具有相同的日期,当用户在主视图控制器中单击今天的事件UIButton但问题是下面的代码没有重新加载正确的数据(它只提供初始数据而不将事件的日期与iPhone中的日历日期进行比较),我的数据来自项目中的json文件,由NSArray事件组成,每个事件对每个键都有不同的值,其中一个键是该事件的数据(“日期”),任何人都可以为我澄清为什么下面的代码没有返回正确的数据?

  @implementation MainViewController {
 NSArray *_events;
 }



.... 

- (IBAction)upcomingEvents:(id)sender {

NSDate *currDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-YYYY"];
NSString *dateString = [dateFormatter stringFromDate:currDate];


for (Events *event in _events){

    if([event.date isEqualToString:dateString]){

       [self.myTableView reloadData];

    }

}


}

1 个答案:

答案 0 :(得分:1)

如果你正在使用UITableViewDataSource,你应该确保它只返回符合条件的事件[event.date isEqualToString:dateString]

你可以做到

NSArray * dateEvents = [_events filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(Events * event, NSDictionary *bindings)
{
    return [event.date isEqualToString:dateString];
}];

然后您可以将dateEvents用于您的UITableViewDataSource。