Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未在UITableView中重新加载正确的数据_Ios_Objective C_Json_Uitableview_Xcode4.6 - Fatal编程技术网

Ios 未在UITableView中重新加载正确的数据

Ios 未在UITableView中重新加载正确的数据,ios,objective-c,json,uitableview,xcode4.6,Ios,Objective C,Json,Uitableview,Xcode4.6,我编写此代码是为了在用户单击主视图控制器中的todays events UIButton时,使用与当前日期相同的事件重新加载UItableView,但问题是下面的代码没有重新加载正确的数据(它只提供初始数据,没有将事件日期与IPhone中的日历日期进行比较),我的数据来自项目中的json文件,由一系列事件组成,每个键的值不同,其中一个键就是该事件的数据(“日期”),有人能为我澄清一下为什么下面的代码没有返回正确的数据吗 @implementation MainViewController {

我编写此代码是为了在用户单击主视图控制器中的todays events UIButton时,使用与当前日期相同的事件重新加载UItableView,但问题是下面的代码没有重新加载正确的数据(它只提供初始数据,没有将事件日期与IPhone中的日历日期进行比较),我的数据来自项目中的json文件,由一系列事件组成,每个键的值不同,其中一个键就是该事件的数据(“日期”),有人能为我澄清一下为什么下面的代码没有返回正确的数据吗

  @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在您使用它的范围内?是编译时错误还是运行时错误?