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
和文件