JSON 데이터를 UITableViewController에 전달하려고합니다. JSON 중 하나를 UITableView로 전달하고 사용자가 성능을 향상시킬 때 다음 ViewController에 표시했습니다. 문제는 ViewController에서이 디스플레이에 원하는 JSON 데이터 4 개가 있다는 것입니다. 내 JSON의 형식으로 인해 ObjectForKey를 수행 할 수 없습니다.JSON 파싱 UITableViewController
여기 여기 내 JSON
{
uid: "60",
name: "pae1344",
mail: "[email protected]",
theme: "",
signature: "",
signature_format: "plain_text",
created: "1396189622",
access: "0",
login: "1396189622",
status: "1",
timezone: "Asia/Bangkok",
language: "",
picture: "0",
init: "[email protected]",
data: null,
uri: "http://localhost/drupal/rest/user/60"
},
인 myTableViewController에서 코드입니다.
#import "TestinViewController.h"
#import "AFNetworking.h"
#import "TestinCell.h"
#import "EDscriptionViewController.h"
@interface TestinViewController()
@end
@implementation TestinViewController
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.finishedGooglePlacesArray = [[NSArray alloc] init];
[self makeRestuarantsRequests];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)makeRestuarantsRequests
{
NSURL *url = [NSURL URLWithString:@"http://localhost/drupal/rest/enterpriselist.json"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFJSONRequestOperation *operation = [AFJSONRequestOperation
JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id responseObject)
{
self.googlePlacesArrayFromAFNetworking = [responseObject valueForKey:@"node_title"];
self.body = [responseObject valueForKey:@"Body"];
self.tel = [responseObject valueForKey:@"Enterprise Tel"];
self.mail = [responseObject valueForKey:@"Enterprise email"];
[self.tableView reloadData];
NSLog(@"%@", self.googlePlacesArrayFromAFNetworking);
NSLog(@"%@" , self.body);
NSLog(@"%@", self.tel);
NSLog(@"%@", self.mail);
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id responseObject)
{
NSLog(@"Request Failed with Error: %@, %@", error, error.userInfo);
}];
[operation start];
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
#warning Potentially incomplete method implementation.
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
#warning Incomplete method implementation.
// Return the number of rows in the section.
return [self.googlePlacesArrayFromAFNetworking count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
TestinCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell ==Nil){
cell = [[TestinCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.txtEnterPriseName.text = [self.googlePlacesArrayFromAFNetworking objectAtIndex:indexPath.row];
cell.txtEnterPriseBody.text = [self.body objectAtIndex:indexPath.row];
cell.txtEnterPriseEmail.text = [self.mail objectAtIndex:indexPath.row];
cell.txtEnterPriseTel.text = [self.tel objectAtIndex:indexPath.row];
// Configure the cell...
return cell;
}
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSIndexPath * indexPath = [self.tableView indexPathForSelectedRow];
EDscriptionViewController *destViewController = (EDscriptionViewController*) segue.destinationViewController ;
// destViewController.enterprise = [enterPrise_names objectAtIndex:indexPath.row];
destViewController.detail = [self.googlePlacesArrayFromAFNetworking objectAtIndex:indexPath.row];
destViewController.Ebody = [self.body objectAtIndex:indexPath.row];
destViewController.EEmail = [self.mail objectAtIndex:indexPath.row];
destViewController.ETel = [self.tel objectAtIndex:indexPath.row];
// destViewController.ebody = [self.body objectAtIndex:indexPath.row];
// destViewController.etel = [self.tel objectAtIndex:indexPath.row];
// destViewController.email = [self.mail objectAtIndex:indexPath.row];
//
}
내 JSON을 사전으로 만들 수있는 방법이 있습니까? 그렇다면 ObjectForKey를 사용하여 표시 할 항목을 선택할 수 있습니까?
사전을 구문 분석하는 가장 좋은 방법은 NSObject 클래스를 만들고 거기에서 구문 분석하고 개체를 만드는 것입니다. –