Ios 错误:[Events objectForKey:]:发送到实例0x的选择器无法识别
我是Xcode和objective-C的新手,我正在尝试构建关于事件的应用程序,我的mainViewController中有两个按钮,一个显示今天的事件,另一个显示未来的事件,我的数据来自json文件[其中包括几个键,其中一个是事件日期]我认为应用程序将通过将活动日期与应用程序中的日历日期相匹配来显示这一点,我使用了以下代码:Ios 错误:[Events objectForKey:]:发送到实例0x的选择器无法识别,ios,objective-c,json,uibutton,xcode4.6.3,Ios,Objective C,Json,Uibutton,Xcode4.6.3,我是Xcode和objective-C的新手,我正在尝试构建关于事件的应用程序,我的mainViewController中有两个按钮,一个显示今天的事件,另一个显示未来的事件,我的数据来自json文件[其中包括几个键,其中一个是事件日期]我认为应用程序将通过将活动日期与应用程序中的日历日期相匹配来显示这一点,我使用了以下代码: @implementation MV_HomeViewController { NSArray *_events; } ..... ....... - (I
@implementation MV_HomeViewController {
NSArray *_events;
}
.....
.......
- (IBAction)upcomingEvents:(id)sender {
// Events *event = [_events object:.row];
//Events *event = [_events objectForKey:@"Events"];
NSDate *currDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-YYYY"];
NSString *dateString = [dateFormatter stringFromDate:currDate];
if([_events objectForKey:@"date"] != dateString){
[[self myTableView] reloadData];
}
for (NSDictionary *event in _events) {
// Now you can use [event objectForKey:@"date"] to retrieve the event date
if ([[event objectForKey:@"date"] isEqualToString:dateString]){
[[self myTableView] reloadData];
}
}
}
但是它给了我一个错误[_eventsobjectforkey:@“date”],这完全有道理,因为我必须在这个操作中再次调用我的json数据,那就是我不知道如何做??有谁能告诉我如何做到这一点,或者如何使上述代码适用于我的应用程序?
我将不胜感激
PS,有关我的json文件的外观的更多详细信息,请参阅我之前发布的问题
谢谢
我尝试实现下面的答案,但使用以下代码:
@implementation MV_HomeViewController {
NSArray *_events;
}
.....
.......
- (IBAction)upcomingEvents:(id)sender {
// Events *event = [_events object:.row];
//Events *event = [_events objectForKey:@"Events"];
NSDate *currDate = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc]init];
[dateFormatter setDateFormat:@"dd-MM-YYYY"];
NSString *dateString = [dateFormatter stringFromDate:currDate];
if([_events objectForKey:@"date"] != dateString){
[[self myTableView] reloadData];
}
for (NSDictionary *event in _events) {
// Now you can use [event objectForKey:@"date"] to retrieve the event date
if ([[event objectForKey:@"date"] isEqualToString:dateString]){
[[self myTableView] reloadData];
}
}
但这次我收到一个错误,提示-->-[Events objectForKey:]:无法识别的选择器被发送到实例0x74303f0
谁能告诉我现在有什么问题!!我很困惑
objectForKey:
是一种NSDictionary
方法,而不是NSArray
方法。要从数组中检索事件字典,可以使用objectAtIndex:
。如果要循环数组中的所有事件字典,可以使用快速枚举,如下所示:
for (NSDictionary *event in _events) {
// Now you can use [event objectForKey:@"date"] to retrieve the event date
}
比较字符串时,请使用
isEqualToString:
而不是相等运算符(=
)或不等运算符(!=
)。thnx进行说明,但是我是否可以将我的is语句放在for循环中,顺便说一句,我尝试运行此代码,但每次单击该按钮时应用程序都会崩溃,例如(NSDictionary*事件在_events中){//现在您可以使用[event objectForKey:@“date”]检索事件日期[[event objectForKey:@“date”]IsequalString:dateString];[[self myTableView]reloadData];}