从 JASON 数据访问 string 和 int 值

Accessing string and int values from JASON data

提问人:user3432634 提问时间:5/18/2022 更新时间:5/18/2022 访问量:53

问:

解析本地保存的JSON文件,将JSON数据存储在NSArray中,并进一步以id类型存储NSArray以在表视图中打印值,但在获取像“id”这样的int值时崩溃,如果我想在自定义TableViewCell中显示不同的值,我还必须做什么。


  -(void)jasonParsing
{
    
    NSString * filePath =[[NSBundle mainBundle] pathForResource:@"EmployeeData" ofType:@"json"];

        NSError * error;
        NSString* fileContents =[NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];


        if(error)
        {
            NSLog(@"Error reading file: %@",error.localizedDescription);
        }

//@property NSArray *dataList; defined in (.m)
        self.dataList = (NSArray *)[NSJSONSerialization
                                    JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding]
                                    options:0 error:NULL];
}
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell *cell = [[UITableViewCell alloc]init];
   

    if (cell==nil)
    {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
    }
    
    id keyValuePair =self.dataList[indexPath.row];
//by using below code crashing with error([__NSCFNumber isEqualToString:]: unrecognized selector sent to instance)
    cell.textLabel.text = keyValuePair[@"id"];
//by using below code values are printing all the name
    cell.textLabel.text = keyValuePair[@"name"];


        
        return cell;
    
}
json objective-c uitableview nsarray

评论

0赞 Larme 5/18/2022
eyValuePair[@"id"];是 a ,而不是 a 根据错误。你可以做.NSNumberNSString[keyValuePair[@"id"] stringValue]
0赞 user3432634 5/18/2022
非常感谢您的快速回复,是的,它起作用了,我们可以称之为类型铸造吗?再次感谢。
0赞 Larme 5/18/2022
这不是选角。强制转换是你所做的,即:告诉编译器不要担心,你知道它是,但我知道我告诉你这是一个,所以这样对待它。在这里,你正在“转换”。 有一个方法,该方法返回具有自己的值的 a。这真的是一个.(NSArray *)idNSArrayNSNumberNSStringNSString

答: 暂无答案