2014-02-14 9 views
5

Ich habe meine eigene JSON-Datei "list.json" für eine Liste von Beispielinformationen wie unten. Meine JSON-Datei ist innerhalb von Xcode, ich möchte meine Informationen zu der Tabelle zeigen, würden Sie mir bitte einige Tipps und Hilfe für diese Implementierung geben, wie kann ich lokale JSON analysieren und Informationen in der Tabelle laden.laden lokalen JSON Informationen in UITableView

[ 
{ 
    "number": "1", 
    "name": "jon" 
}, 
{ 
    "number": "2", 
    "name": "Anton" 
}, 
{ 
    "number": "9", 
    "name": "Lili" 
}, 
{ 
    "number": "7", 
    "name": "Kyle" 
}, 
{ 
    "display_number": "8", 
    "name": "Linda" 
} 
] 

Antwort

12

können Sie eine eigene Klasse erstellen, die von UITableViewController erbt.

Der Code den Inhalt der list.json Datei in ein Array zu lesen ist:

NSString * filePath =[[NSBundle mainBundle] pathForResource:@"list" ofType:@"json"]; 

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


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


    self.dataList = (NSArray *)[NSJSONSerialization 
           JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding] 
           options:0 error:NULL]; 

Und die Header-Datei ist:

#import <UIKit/UIKit.h> 

@interface TVNA_ReadingDataTVCViewController : UITableViewController 

@end 

Die Implementierung ist:

#import "TVNA_ReadingDataTVCViewController.h" 

@interface TVNA_ReadingDataTVCViewController() 

@property NSArray* dataList; 

@end 

@implementation TVNA_ReadingDataTVCViewController 



- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [self readDataFromFile]; 

    [self.tableView reloadData]; 
} 


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

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


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


    self.dataList = (NSArray *)[NSJSONSerialization 
           JSONObjectWithData:[fileContents dataUsingEncoding:NSUTF8StringEncoding] 
           options:0 error:NULL]; 
} 



#pragma mark - Table view data source 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 

    return 1; 
} 

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

    return self.dataList.count; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    id keyValuePair =self.dataList[indexPath.row]; 

    cell.textLabel.text = keyValuePair[@"name"]; 

    cell.detailTextLabel.text=[NSString stringWithFormat:@"ID: %@", keyValuePair[@"number"]]; 
    return cell; 
} 


@end 

Schließlich ordnen Sie diese Klasse auf Ihrem Storyboard als benutzerdefinierte Klasse Ihres Table View Controllers zu. Hoffe das hilft.

+0

Vielen Dank – user3273254

+0

@ user3273254 Keine Sorge –