2011-07-11 11 views
0

辞書のJSON配列(http://www.cjs-design.nl/json.php)をテーブルビューに解析する時点で固まっています。私はちょうどそのタイトルの最初の、悪い数字を後でdetailviewsを表示したい。テーブルビューで辞書のJSON配列を解析する

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; 
} 


NSString *rawJson = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.cjs-design.nl/json.php"]]; 

// No connection or file not found 
if ([rawJson length] == 0) { 
    UIAlertView *alert = [[UIAlertView alloc] 
          initWithTitle:@"Foutmelding" message:@"De URL kon niet worden gevonden" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
    [alert show]; 
    [alert release]; 
    [rawJson release]; 
    return; 
} 


SBJSON *parser = [[[SBJSON alloc] init] autorelease]; 
// 1. get the top level value as a dictionary 
NSDictionary *jsonObject = [parser objectWithString:rawJson error:NULL]; 
// 2. get the object as an array 
NSArray *list = [jsonObject objectForKey:@"book"]; 
// 3. iterate the array; each element is a dictionary.  

for (NSDictionary *book in list) 
{ 
    // that contains a string for the key "title" 
    NSString *title = [book objectForKey:@"title"]; 
    cell.textLabel.text = title; 
} 
return cell; 

}

答えて

2

どこか、すなわちのviewDidLoad、あなたはJSONをパースする必要があります。その後、UITableViewのdataSourceメソッドを実装します。私はそれらをのNSLog

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [list count]; 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

    static NSString *CellIdentifier = @"CellIdentifier"; 

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

    } 
    NSDictionary *book = [list objectAtIndex:indexPath.row]; 
    NSString *title = [book objectForKey:@"title"]; 

    cell.titleLabel.text = title; 
} 
0
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    NSString *rawJson = [[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://www.cjs-design.nl/json.php"]]; 
    // No connection or file not found 
    if ([rawJson length] == 0) { 
     UIAlertView *alert = [[UIAlertView alloc] 
           initWithTitle:@"Foutmelding" message:@"De URL kon niet worden gevonden" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
     [alert show]; 
     [alert release]; 
     [rawJson release]; 
     return; 
    } 
    SBJsonParser *parser = [[SBJsonParser alloc] init]; 
    // 1. get the top level value as a dictionary 
    NSDictionary *jsonObject = [parser objectWithString:rawJson error:NULL]; 
    NSLog(@"Dict: %@",jsonObject); 
    list = [jsonObject objectForKey:@"book"]; 
    NSLog(@"List: %@",list); 
    [rawJson release]; 
} 

、彼らは両方の印刷ヌル、その文字列が解析されますdoesntの?文字列は配列thoの辞書を含んでいます。

関連する問題