ios 7无法识别的选择器发送到实例

Posted

技术标签:

【中文标题】ios 7无法识别的选择器发送到实例【英文标题】:ios 7 unrecognized selector sent to instance 【发布时间】:2014-09-12 10:58:58 【问题描述】:

我收到错误“无法识别的选择器发送到实例 0xca51f70”应用程序在该行崩溃“ daysWeather = eventsJSONData[indexPath.row];" 我阅读了有关该问题的几篇文章,并了解这是 NSArray / NSDictionary 设置错误。我似乎无法弄清楚我需要更改什么。让我知道是否还有其他代码我可以发布。感谢您的帮助。

相关代码如下:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    if(!self.events)
        return 0;

    NSArray *eventsJSONData = [self.events eventsJSONData];
    return [eventsJSONData count];
    NSLog( @"the count is %lu", (long)[eventsJSONData count]);


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    static NSString *CellIdentifier = @"EventCell";
    TDCell *cell = (TDCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier ];
    if(cell == nil)
    
        cell = [[TDCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"EventCell"];
    
    NSDictionary *daysWeather = nil;

    NSArray *eventsJSONData = [self.events eventsJSONData];
    daysWeather = eventsJSONData[indexPath.row];

    [cell configCell:daysWeather];

    return cell;

json对象在调试区显示为如下代码:

2014-09-12 03:19:45.660 iCLUB[24624:60b] JSON OWNER: 
data =     
    events =         
        result =             (
                            
                "end_time" = "4:00AM";
                "event_date" = "09-12-2014";
                "event_id" = 84;
                "event_image" = "http://www.asadfdfs.com/iclub/images/event_flyers/event114105121486dd4697f899124d1c3519c0f2272710f.png";
                "event_price" = 20;
                "event_tickets_total" = 200;
                "event_title" = "New Test Event";
                "start_time" = "1:00AM";
                "venue_name" = "the box";
                weekday = Friday;
            
        );
    ;
;

【问题讨论】:

无法识别的选择器是什么?你也应该得到那个错误。 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'-[__NSCFDictionary objectAtIndexedSubscript:]: unrecognized selector sent to instance...然后在底部打印 eventsJSONData 这是上面的 json 对象和indexPath 的描述: length = 2, path = 0 - 0 您的部署目标是 ios 5 或更早版本吗? 部署目标是7.1 -1(并投票关闭)未提供 COMPLETE 异常消息和异常堆栈跟踪。 【参考方案1】:

我相信这条线

NSArray *eventsJSONData = [self.events eventsJSONData];

应该改成那个(或类似的)

NSArray *eventsJSONData = [self.events eventsJSONData][@"result"];

从您的 JSON 对象看来,self.events 返回一个带有一个键 @"result" 的字典。

【讨论】:

非常感谢您解决了这个问题。在这种情况下,我仍然不明白它背后的原因。无论如何,谢谢,我花了几个小时试图弄清楚。 虽然这个答案可能“有效”,但它在技术上并不正确。请参阅我的正确答案。

以上是关于ios 7无法识别的选择器发送到实例的主要内容,如果未能解决你的问题,请参考以下文章

Swift:手势识别器无法识别的选择器发送到实例

pushwoosh 错误无法识别的选择器发送到实例 Cordova 1.7.0

无法识别的选择器发送到实例(iOS) - 自动WaitsToMinimiseStalling

iOS Cocoa NSArrayI 长度]:发送到实例的无法识别的选择器

适用于 iOS 的 FBSDK:“发送到实例的无法识别的选择器”

NSInvalidArgumentException,使用 performSegueWithIdentifier 时发送到实例的无法识别的选择器