ios - 没有在 TableView 中重新加载正确的数据

标签 ios objective-c json uitableview xcode4.6

我编写这段代码是为了重新加载 UItableView 的事件,该事件的日期与用户在主视图 Controller 中单击今天的事件 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];

    }

}


}

最佳答案

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

你可以做到

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

然后您可以为您的 UITableViewDataSource 使用 dateEvents

关于ios - 没有在 TableView 中重新加载正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20830448/

相关文章:

objective-c - 我应该在哪里设置 ViewController 中的 subview 框架

objective-c - 从位图轮廓创建 NSBezierPath

ios - i18n 与 Cocoapods 和动态库

objective-c - NSArray getter 方法未返回正确的值

iOS 本地声明隐藏实例变量 + NSCFString objectForKeyedSubscript 无法识别的选择器发送到实例

ruby-on-rails - json 自动完成 rails 中的错误 url

jQuery 使用 .text() + JSON 保存字符串并使用 .val() 读取字符串会丢失换行符

json - 使用 circe 编码为 JSON 时出现 StackOverflowError

ios - 在 Objective-C 中混合 block 和委托(delegate)

ios - 使用 Xcode 8.3.2 为 AdHoc IPA 导出指定配置文件