Как извлечь конкретные значения и заполнить в табличном представлении - PullRequest
0 голосов
/ 09 февраля 2012

Я анализирую фид json, содержащий три тега: Name, Status, Image и сохраняю его в NSMutableArray. Если мой «status» равен «1», я должен вернуть данные, соответствующие тегу «Name», в пределахфигурные скобки и заполните его моим табличным представлением. проблема состоит в том, что если его true.im может возвращать только одно значение, и он заполняет полное табличное представление ниже, это структура, код и снимок экрана json.

{
    Image = "http://dev-parkguiden.knutpunkten.se/Content/Images/Icons/icon8.png";
    Name = "Caf\U00e9/restaurang";
    Status = 0;
},
    {
    Image = "http://dev-parkguiden.knutpunkten.se/Content/Images/Icons/icon9.png";
    Name = "Kiosk ";
    Status = 0;
},
    {
    Image = "http://dev-parkguiden.knutpunkten.se/Content/Images/Icons/icon10.png";
    Name = "Toalett finns";
    Status = 1;
},
    {
    Image = "http://dev-parkguiden.knutpunkten.se/Content/Images/Icons/icon11.png";
    Name = "Parkeringsm\U00f6jligheter";
    Status = 1;
},
    {
    Image = "http://dev-parkguiden.knutpunkten.se/Content/Images/Icons/icon1.png";
    Name = Minigolf;
    Status = 1;
},

XCODE

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



static NSString *CellIdentifier = @"Cell";

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

}

for ( int i=0; i<[self.media1 count]; i++) 
{

    NSDictionary *boy=[self.media1 objectAtIndex:i];


NSString *str=[[NSString alloc]initWithFormat:@"%@",boy];
    //NSLog(@"the value:%@",str);

    if([str isEqualToString:@"1"])
    { 
        //NSDictionary *hai=[[boy objectAtIndex:indexPath.row]objectForKey:@"1"];
    //  NSLog(@"the values availbale:%@",hai);
        cell.textLabel.text=[self.story objectAtIndex:i];
            return cell;

   }

}

enter image description here

1 Ответ

1 голос
/ 09 февраля 2012

из-за того, что вы используете цикл for, вы сразу получаете последние записи матчей.почему вы используете для цикла в таблице.Вы должны проверить значения снаружи и создать новый массив, а затем назначить этот массив в таблицу.также отправьте еще немного кода, чтобы я мог решить вашу проблему

-(void)makeNewArray
{
for ( int i=0; i<[self.media1 count]; i++) 
{

    NSDictionary *boy=[self.media1 objectAtIndex:i];


    NSString *str=[[NSString alloc]initWithFormat:@"%@",boy];
    if([str isEqualToString:@"1"])
    { 
        [newArray addObject:[self.story objectAtIndex:i]];
    }
}
[tableView reloadData];
}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    // Return the number of rows in the section.
    return newArray.count;
}

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

static NSString *CellIdentifier = @"Cell";

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

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

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