将 JSOn 绘制到 UITableviewCell 中时出错

Posted

技术标签:

【中文标题】将 JSOn 绘制到 UITableviewCell 中时出错【英文标题】:Error Drawing JSOn into UITableviewCell 【发布时间】:2012-10-10 03:51:00 【问题描述】:

我有这样的 json(有字典和数组)。 我想将所有 json 绘制到 UItableviewcell 中,但它不在那里绘制

   data: [
      

        featured: true,
        price: 
                    currency: "IDR",
                    amount: 5557679,
                    formatted: "Rp5.558.000"
      ,
] 

这是我的 viewcontroller.h 文件

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
IBOutlet UITableView *mainTableView;
    NSURL *URL;
    NSDictionary *Deals;
    NSArray *Deals_array;
    NSMutableData *data;


@end

这是我的 .m 文件

@implementation ViewController

- (void)viewDidLoad

    [super viewDidLoad];
    self.title=@"SOme Apps";
    [UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
    URL = [NSURL URLWithString:[NSString stringWithFormat:@"http://someurl.com"]];
    NSURLRequest *request=[NSURLRequest requestWithURL:URL];
    [[NSURLConnection alloc] initWithRequest:request delegate:self];

    /*dispatch_async(kBgQueue, ^
        NSData* data = [NSData dataWithContentsOfURL: URL];
        [self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
    );*/

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response

    data=[[NSMutableData alloc] init];
    NSLog(@"%@",data);


- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)theData

    [data appendData:theData];


- (void)connectionDidFinishLoading:(NSURLConnection *)connection
    NSError* error;
    Deals= [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    Deals_array = [Deals objectForKey:@"data"]; //2
    NSDictionary* loan = [Deals_array objectAtIndex:0];
    NSString *test=[loan objectForKey:@"featured"];
    NSLog(@"%@",test);
    [mainTableView reloadData];





- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
    NSLog(@"Error");


////set minimum section oftableview
-(int)numberOfTableviewSection : (UITableView *) tableView

    return 1;


////set length uitableview
-(int) tableView :(UITableView *)tableView numberOfRowsInSection:(NSInteger)section


    return [Deals_array count];


///declaring uitableview
-(UITableViewCell *)tableView :(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

    UITableViewCell *cell =[tableView dequeueReusableCellWithIdentifier:@"MainCell"];
    if (cell==nil)
        cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"MainCell"];
    
    cell.textLabel.text=[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"featured"];
    return  cell;

 @end

但它没有绘制对象键@test,有人可以帮我为什么吗?

【问题讨论】:

【参考方案1】:

尝试分配

Deals_array = [[NSArray alloc] initWithArray:[Deals objectForKey:@"data"]];

【讨论】:

你是在问问题还是说是真的? 确实可以使用 Deals_array = [[NSArray alloc] initWithArray:[Deals objectForKey:@"data"]] 非常感谢 [评论已刷新] 嘿,伙计,但是为什么在我写完这一行之后 NSArray *price=[Deals_array objectForKey:@"price"];它返回错误和 NSArray *price=[Deals objectForKey:@"price"];它为空... :( 因为 deal_array 是一个数组并且它没有键......你应该这样做 [[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"] 抱歉我的拼写错误 [[[Deals_array objectAtIndex:indexPath.row] objectForKey:@"price"]objectForKey:@"formatted"]

以上是关于将 JSOn 绘制到 UITableviewCell 中时出错的主要内容,如果未能解决你的问题,请参考以下文章

将 JSON 数组从 Django 视图返回到模板

使用 JSON 绘制具有多条线的单个 Google 折线图

使用 JSON 将数据从 PHP 数组传递到 Highcharts 图表

尝试通过 viewWithTag 获取 UIImageView 引用后崩溃

如何将对象绘制到charts.js

ELK收集Apache的json格式访问日志并按状态码绘制图表