JSON到UITableView IOS Objective-C [关闭]

Posted

技术标签:

【中文标题】JSON到UITableView IOS Objective-C [关闭]【英文标题】:JSON to UITableView IOS Objective-C [closed] 【发布时间】:2016-08-26 13:26:56 【问题描述】:

我正在尝试从 URL API 获取 JSON 到 UITableView。

下面是我的视图控制器代码。

我是 Objective-C 的新手。

只是想知道我应该使用什么来实现这一点。这是我下面的代码,我不断收到错误。

任何帮助将不胜感激。

请记住,我对此很陌生,所以我需要详细的解释和工作。

ViewController.h

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

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

    NSError *error;
    NSString *url_string = [NSString stringWithFormat: @"http://django-env2.55jfup33kw.us-west-2.elasticbeanstalk.com/api/Musician/?format=json"];
    NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:url_string]];
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

    //NSLog(@"json: %@", json);

   // NSString *mystring = json[1];
   // NSLog(@"json: %@", mystring);


    NSMutableArray *myMutableArray = [json mutableCopy];

    NSArray *myArray = [myMutableArray copy];

    NSLog(@"json: %@", myArray);


    self.greekLetters = @[@"test", @"test2"];








- (void)didReceiveMemoryWarning 
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return myArray.count;


// 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:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    

    NSDictionary *cellDict = [myArray objectAtIndex:indexPath.row];

    cell.textLabel.text = [cellDict objectForKey:@"address_line1"];
    cell.detailTextLabel.text = [cellDict objectForKey:@"zipcode"];

    return cell;


@end

【问题讨论】:

代码有什么问题? 遇到错误?什么错误?什么是打印cellDict?请注意,一旦获得 JSON,您应该[myTableView reloadData]; 如果您的 json 为 nil 或您的任何数据源数组为 nil 或调用了 delagte 方法,请添加所有详细信息!!! JSON & Xcode 6 UITableView的可能重复 Pavel 不要给出可能的重复来更好地回答这个问题 【参考方案1】:

第一步

@interface ViewController ()

  // create the array 
  NSMutableArray *myMutableArray;
 
@end

第二步

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

    NSError *error;
    NSString *url_string = [NSString stringWithFormat: @"http://django-env2.55jfup33kw.us-west-2.elasticbeanstalk.com/api/Musician/?format=json"];
    NSData *data = [NSData dataWithContentsOfURL: [NSURL URLWithString:url_string]];
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

       // allocate the memory of your array
       myMutableArray = [NSMutableArray array];

     // check your dictionary contains values or not
     if (json)
    
     // add the data to your array
    [myMutableArray addObject:json];
    [yourTableViewname reLoaddata]; // refresh the table
    

 

你的 JSON 输出是

第三步

  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    return 1;


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

    return myMutableArray.count;


// 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:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier] autorelease];
        //cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    

    NSDictionary *cellDict = [myMutableArray objectAtIndex:indexPath.row];

    cell.textLabel.text = [cellDict objectForKey:@"first_name"];
    cell.detailTextLabel.text = [cellDict objectForKey:@"last_name"];

    return cell;

【讨论】:

以上是关于JSON到UITableView IOS Objective-C [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Objective-C 到 UITableView 的 JSON 数据

在 iOS 上将 Wordpress JSON 解析为 UITableView

从iOS中的json动态创建UITableView中的UILabels?

Json数据在uitableview ios中没有更新?

UITableView 中未加载 JSON 数据

iOS--JSON解析后如何获取数据,并且展示到相应cell上