JSON 使用 Tableview 填充数组

Posted

技术标签:

【中文标题】JSON 使用 Tableview 填充数组【英文标题】:JSON using Tableview to populate the array 【发布时间】:2011-12-22 06:13:56 【问题描述】:

我正在使用 tableview 从 json 文件填充数组...在我的视图控制器中,我有 tableview。当我运行项目时,我的表视图编码没有执行。我不知道你吗?任何人都请帮助我。这是我的视图控制器文件

#import "JSONparserViewController.h"
    @implementation JSONparserViewController
    @synthesize arraydata;

    - (void)didReceiveMemoryWarning
    
        [super didReceiveMemoryWarning];
        // Release any cached data, images, etc that aren't in use.
    


    #pragma mark - View lifecycle

    - (void)viewDidLoad
    
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.     
    


    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 
        NSLog(@"No Of Elements in Array Data: %d",[arraydata count]);
        return [arraydata count];
 

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    
        return 80;
    


    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

        static NSString *CellIdentifier = @"Cell";

        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) 
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
        

        // Configure the cell...
         NSLog(@"%@",arraydata);
        NSDictionary *aTweet = [arraydata objectAtIndex:[indexPath row]];
        cell.textLabel.text = [aTweet objectForKey:@"name"];
        //    NSDictionary *newArray=[aTweet objectForKey:@"properties"];
        //   
        //    NSDictionary *newArray1=[newArray objectForKey:@"propertyMeta"];
        //    cell.detailTextLabel.text = [newArray1 objectForKey:@"name"];
        //    cell.detailTextLabel.text = [newArray objectForKey:@"value"];
        cell.textLabel.adjustsFontSizeToFitWidth = YES;
        cell.textLabel.font = [UIFont systemFontOfSize:12];
        cell.textLabel.minimumFontSize = 10;
        cell.textLabel.numberOfLines = 4;
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;

        //cell.detailTextLabel.text = [newArray1 objectForKey:@"type"];

        //  NSURL *url = [NSURL URLWithString:[aTweet objectForKey:@"profile_image_url"]];
        //  NSData *data = [NSData dataWithContentsOfURL:url];
        //  cell.imageView.image = [UIImage imageWithData:data];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        NSLog(@"HIIIIIIIIII");
        return cell;

    

【问题讨论】:

在上面的编码中有一个 NSLog 也没有被执行.. 我想你在找JSON Parsing in xCode。 你一定忘记为数据源设置委托了。 【参考方案1】:

您的问题是您在 arraydata 对象中没有任何数据。它的计数为零。所以虽然你已经设置了所有的委托和数据源,你的表委托方法不会被调用,因为当它调用 noofrowinSection 时,它返回零。

请确认您的 arrayObject 中有数据。

【讨论】:

实际上在我的数组中,我从 AppDelegate 设置数据。在我设置加载到模拟器中的数组值 UITableView 之前。所以该数组值返回零,我没有得到我的 tableview 数据。无论如何谢谢好友...我发现就在之前......你是对的!【参考方案2】:

您是否已初始化您的 arraydata 对象...?而且在我看来,您还没有为您的表格视图设置委托和数据源,因为您的 nslog 委托方法没有被调用。

【讨论】:

我已经初始化了 arraydata 并同时设置了委托和数据源。我还没有清除这个问题......我也是错误之一,即“应用程序应该有一个根视图控制器应用程序启动结束”【参考方案3】:

这样做是为了在你的头文件中设置 tableView 的委托和数据源。

@interface JSONparserViewController: UIViewController<UITableViewDelegate,UITableViewDataSource>

还要检查你的arraydata数组是否有内存。如果没有先给它内存

【讨论】:

【参考方案4】:

你有 nit 分配你的数组。首先,您必须在分配数组值的任何地方分配数组。 NSLog 你的数组在视图中会出现如果打印然后它必须被执行

【讨论】:

【参考方案5】:

请确认您的数组中有数据。解析完成后,在connectiondidfinishloading 方法中重新加载表。表格将自动重新加载。

【讨论】:

以上是关于JSON 使用 Tableview 填充数组的主要内容,如果未能解决你的问题,请参考以下文章

填充 TableView 中的 JSON 数组和 CoreData

向 MutableArray 添加或删除对象时泄漏

我如何解析 JSON,将其排序为数组。提取数据并填充到表格视图中?

在 Swift 中使用远程 JSON 数据填充 tableView

如何使用 json 而不是 plist 来填充 TableView

如何使用来自 json 的 mutablearray 填充我的 tableview