Разбор iPhone JSON - PullRequest
       3

Разбор iPhone JSON

1 голос
/ 16 мая 2011

Я новичок в разработке приложений для iPhone. Мне нужна помощь ... Я хочу проанализировать некоторые данные (название банка) и показать их в UITableView. Я использую этот код для анализа имени банка, которое находится в JSON Формат:

     NSArray *atmDAta = [responseString JSONValue];
for (NSDictionary *dict in atmDAta) {
    NSLog(@"%@", [dict objectForKey:@"Name"]);
    [listOfItems addObject:[dict objectForKey:@"Name"]];
}

Но когда я пытаюсь показать их в таблице следующим образом:

 cell.textLabel.text = [listOfItems objectAtIndex:indexPath.row];
return cell;

Это ничего не покажет в таблице, но NSlog работает и покажет имя банка в журнале xcode. Пожалуйста, помогите.

Ответы [ 4 ]

0 голосов
/ 16 мая 2011

После добавления массива вы можете сделать [listOfItems retain]

0 голосов
/ 16 мая 2011

Пожалуйста, используйте этот код для анализа JSON

-(void)getLatestScore
 {
     SBJsonParser *parser = [[SBJsonParser alloc] init];    

     NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://json-cricket.appspot.com/score.json"]];

     // Perform request and get JSON back as a NSData object
     NSData *response = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

     // Get JSON as a NSString from NSData response
     NSString *str_Json_String = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];

     // parse the JSON response into an object

     NSDictionary *dicCricketScore = [parser objectWithString:str_Json_String error:nil];

     lblDate.text = [dicCricketScore objectForKey:@"date"];
     lblMatch.text = [dicCricketScore objectForKey:@"match"];
     lblBattingTeam.text = [dicCricketScore objectForKey:@"batting_team"];
     lblScore.text = [dicCricketScore objectForKey:@"score"];
     lblSummary.text = [dicCricketScore objectForKey:@"summary"];
 }

Из этого кода вы получите последний результат игры в крикет от JSON Parsing ....

0 голосов
/ 16 мая 2011

@ Рокки Дай попробовать

Объявить в .h NSArray * listOfItems;

@property (nonatomic, copy)NSArray *listOfItems;

и используйте это в .m

NSMutableArray *tempArray = [[NSmutableArray alloc]initWithCapacity:[atmDAta count]];
for (NSDictionary *dict in atmDAta) {
    NSLog(@"%@", [dict objectForKey:@"Name"]);
    if (![dict valueForKeyIsNull:@"Name"]) {
        [tempArray addObject:[dict objectForKey:@"Name"]];          
    }
}
self.listOfItems = [NSArray arrayWithArray:tempArray];
[tempArray release];
if([self.listOfItems count] > 0)
[yourTable reloadData];

Где я использую категорию

@implementation NSDictionary (KeyExists)

- (BOOL) keyExists:(NSString *) key {
    return [self valueForKey:key] != nil;
}

- (BOOL) valueForKeyIsNull:(NSString *) key {
    return ![self keyExists:key] || ((NSNull *)[self valueForKey:key] == [NSNull null]);
}
@end

Ура !!!

0 голосов
/ 16 мая 2011

Позвоните [yourtable reloadData];, когда вы закончили анализ json

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...