Ios 未在UITableView中重新加载正确的数据
我编写此代码是为了在用户单击主视图控制器中的todays events UIButton时,使用与当前日期相同的事件重新加载UItableView,但问题是下面的代码没有重新加载正确的数据(它只提供初始数据,没有将事件日期与IPhone中的日历日期进行比较),我的数据来自项目中的json文件,由一系列事件组成,每个键的值不同,其中一个键就是该事件的数据(“日期”),有人能为我澄清一下为什么下面的代码没有返回正确的数据吗Ios 未在UITableView中重新加载正确的数据,ios,objective-c,json,uitableview,xcode4.6,Ios,Objective C,Json,Uitableview,Xcode4.6,我编写此代码是为了在用户单击主视图控制器中的todays events UIButton时,使用与当前日期相同的事件重新加载UItableView,但问题是下面的代码没有重新加载正确的数据(它只提供初始数据,没有将事件日期与IPhone中的日历日期进行比较),我的数据来自项目中的json文件,由一系列事件组成,每个键的值不同,其中一个键就是该事件的数据(“日期”),有人能为我澄清一下为什么下面的代码没有返回正确的数据吗 @implementation MainViewController {
@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 IsequalString:dateString]
你能行
NSArray * dateEvents = [_events filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(Events * event, NSDictionary *bindings)
{
return [event.date isEqualToString:dateString];
}];
然后,您可以对UITableViewDataSource使用
dateEvents
。如果\u events
是您的数据源,那么您只需过滤数组,然后向tableview发送reloadData
消息以进行刷新。现在您只需刷新tableview,而不对数据源数组进行任何更改。@Alladinian以及如何过滤阵列???(我是Xcode和objective-C的新手)是的,我正在使用UITAbleViewDataSource,这是否意味着我不必再次使用for条件?我应该在iAction中的何处包含上述声明?您可能希望在“upcomingEvents”方法中更新dateEvents。并确保UITAbleViewDataSource使用dateEvents而不是events。您可能会希望将dateEvents设置为类的属性。当我在代码中包含上述代码时,[\u events]中出现了一个错误,即说(未知接收器),尽管我在实现部分中声明了该数组(NSArray*\u events)。我不明白!!!以及如何在我的UITableViewDataSource中包含dateEvents?(我对这一切都很陌生,我希望得到进一步的澄清)@user3066516,不清楚为什么“U事件”会给你这个错误,因为你在上一个问题中使用了这个错误,并且它在那里工作。要使用dateEvents而不是“U事件”作为数据源,你只需在数据源方法中使用它(节中的行数、索引路径中的行单元格等)不要使用_事件。您可能希望使用if else子句来选择使用哪个数组,具体取决于您在upcomingEvents方法中设置的标志。这可能有助于查看更多代码以了解需要更改的内容。另外,您得到的错误是什么?未知接收器意味着未知标识符。您确定ts在您使用它的范围内?是编译时错误还是运行时错误?