Ios JSON到UITableView由于未捕获异常而终止应用程序';NSInvalidArgumentException';

Ios JSON到UITableView由于未捕获异常而终止应用程序';NSInvalidArgumentException';,ios,objective-c,json,uitableview,Ios,Objective C,Json,Uitableview,我试图读取一个文件countries.json,并在UITableView中显示此数据。通过搜索stackOverFlow,我按照他们在那里说的做了: -(void)loadJSON{ NSString *filePath = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"json"]; NSData *JSONData = [NSData dataWithContentsOfFile:filePath

我试图读取一个文件
countries.json
,并在
UITableView
中显示此数据。通过搜索stackOverFlow,我按照他们在那里说的做了:

-(void)loadJSON{

    NSString *filePath = [[NSBundle mainBundle] pathForResource:@"countries" ofType:@"json"];
    NSData *JSONData = [NSData dataWithContentsOfFile:filePath options:NSDataReadingMappedIfSafe error:nil];

    NSDictionary *jsonObject = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableContainers error:nil];
    countries = (NSArray *)jsonObject;

    NSLog(@"Count of Countries: %ld",[countries count]);

}
这个
NSLog
打印
248
,我认为这是正确的值,我假设它读取的是正确的。同时还完成了
UITableView
的两种强制方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return [countries count];
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *simpleTableIdentifier = @"CountryTableCell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];
    }

    cell.textLabel.text = [countries objectAtIndex:indexPath.row];
    return cell;
}
但当我运行此文件时,会出现以下错误:

-[__NSDictionaryM isEqualToString:]: unrecognized selector sent to instance 0x7fe903e7fb30
2015-04-27 16:51:14.561 appMeNo[10192:1073720] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSDictionaryM isEqualToString:]: unrecognized selector sent to instance 0x7fe903e7fb30'
我已经遵循了很多解决方案,但都不起作用。我正在这个应用程序中使用
tabViewController
。我认为这不会造成问题


更新
我正在使用此文件或为了获得更清晰的文件图像,这里就是我复制到项目中的确切文件

在您的代码中的某个地方,您正在调用
isEqualToString
。此时,源字符串无效。它一直指向字典对象


检查生成方法调用的字符串变量的引用
isEqualToString

在代码中的某个地方,您正在进行调用
isEqualToString
。此时,源字符串无效。它一直指向字典对象


检查生成方法调用的字符串变量的引用
isEqualToString

在代码中的某个地方,您正在进行调用
isEqualToString
。此时,源字符串无效。它一直指向字典对象


检查生成方法调用的字符串变量的引用
isEqualToString

在代码中的某个地方,您正在进行调用
isEqualToString
。此时,源字符串无效。它一直指向字典对象


检查生成方法调用的字符串变量的引用
isEqualToString

您在
NSDictionary
对象上调用的是
isEqualToString
,而不是
NSString
。一旦你展示了你的JSON数据,我就能更好地了解到底出了什么问题

在解析JSON数据结构之前,请确保您正确理解它。我猜在调用
loadJSON
之后,您访问它的方式不正确

编辑:


您正在对
NSDictionary
对象而不是
NSString
调用
isEqualToString
。一旦你展示了你的JSON数据,我就能更好地了解到底出了什么问题

在解析JSON数据结构之前,请确保您正确理解它。我猜在调用
loadJSON
之后,您访问它的方式不正确

编辑:


您正在对
NSDictionary
对象而不是
NSString
调用
isEqualToString
。一旦你展示了你的JSON数据,我就能更好地了解到底出了什么问题

在解析JSON数据结构之前,请确保您正确理解它。我猜在调用
loadJSON
之后,您访问它的方式不正确

编辑:


您正在对
NSDictionary
对象而不是
NSString
调用
isEqualToString
。一旦你展示了你的JSON数据,我就能更好地了解到底出了什么问题

在解析JSON数据结构之前,请确保您正确理解它。我猜在调用
loadJSON
之后,您访问它的方式不正确

编辑:


countries数组具有
NSDictionary
类型对象,因此,例如,在indexpath中有countries\u名称 试试这个

cell.textLabel.text = [countries [indexPath.row][@"country_name"]];

countries数组具有
NSDictionary
类型对象,因此,例如,在indexpath中有countries\u名称 试试这个

cell.textLabel.text = [countries [indexPath.row][@"country_name"]];

countries数组具有
NSDictionary
类型对象,因此,例如,在indexpath中有countries\u名称 试试这个

cell.textLabel.text = [countries [indexPath.row][@"country_name"]];

countries数组具有
NSDictionary
类型对象,因此,例如,在indexpath中有countries\u名称 试试这个

cell.textLabel.text = [countries [indexPath.row][@"country_name"]];
像这样试试

cell.textLabel.text = [[[countries objectAtIndex:indexPath.row] objectForKey:@"name"] objectForKey:@"common"];
我希望这段代码对您有用。

像这样试试

cell.textLabel.text = [[[countries objectAtIndex:indexPath.row] objectForKey:@"name"] objectForKey:@"common"];
我希望这段代码对您有用。

像这样试试

cell.textLabel.text = [[[countries objectAtIndex:indexPath.row] objectForKey:@"name"] objectForKey:@"common"];
我希望这段代码对您有用。

像这样试试

cell.textLabel.text = [[[countries objectAtIndex:indexPath.row] objectForKey:@"name"] objectForKey:@"common"];


我希望这段代码对您有用。

添加您的countries.json文件日志,以便更好地了解您的问题您在哪里调用loadJSON函数您需要显示您的json以便我们了解发生了什么事情请您显示您的响应?@TalhaCh尝试如下[[[countries objectAtIndex:indexath.row]objectForKey:@“name”]objectForKey:@“common”];添加您的countries.json文件日志以便更好地了解您的问题您在哪里调用loadJSON函数您需要显示您的json以便我们了解发生了什么事情请您向我显示您的响应?@TalhaCh尝试如下[[[countries objectAtIndex:indexath.row]objectForKey:@“name”]objectForKey:@“common”];添加您的countries.json文件日志,以便更好地了解您的问题您在哪里调用loadJSON函数您需要显示您的json以便我们了解发生了什么事情请显示您的响应?@TalhaCh尝试如下[[[countries objectAtIndex:indexath.row]objectForKey:@“name”]objectForKey:@“common”];添加您的countries.json文件日志,以便更好地了解您的问题您在哪里调用loadJSON函数您需要显示您的json以便我们了解发生了什么事情请显示您的响应?@TalhaCh尝试如下[[[countries objectAtIndex:indexath.row]objectForKey:@“name”]objectForKey:@“common”]是的,我也算出了,但我检查了每一个
.m
.h
文件没有
IsequalString
是的,我也算出了,但我检查了每一个
.m
.h
文件没有
IsequalString
是的,我也算出了,但我检查了每一个
.m
文件