Contar el número de valores en el objeto del diccionario

<pre>
    products =     (
                {
            id = 19;
            "image_url" = "http://localhost:8888/straightoffer/image/data/1330374078photography.jpg";
            name = "Save $240 on your next photo session";
        },
                {
            id = 21;
            "image_url" = "http://localhost:8888/straightoffer/image/data/1330373696massage.jpg";
            name = "One Hour  Massage";
        }
    );
}
</pre>

lo anterior es lo que obtuve a través de json, necesito asignar los valores a uitableviews:

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ NSLog(@"Número de filas: %d",[[products objectForKey:@"products"] count]); return [[productos objectForKey:@"products"] recuento]; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; } NSString *nombreProductoActual; currentProductName = [claves de producto objectAtIndex:indexPath.row]; NSLog(@"nombre del producto: %@", nombreProductoActual); [[cell textLabel] setText:currentProductName]; celda de retorno; }

devuelve 0 número de filas, soy un novato en ios, ayúdenme a asignar estos valores a uitableview.

saludos

preguntado el 13 de diciembre de 12 a las 09:12

Necesito más información. Este código se ve bien. Va mal en la parte de recuperación de datos de esta historia. ¿Puedes agregar el código de cómo llenas el products ¿diccionario? -

puedes registrar el products y mostrarnos..? Si el products en sí mismo es la matriz que puede simplemente contar, ¿verdad? -

productos = [NSJSONSerialization JSONObjectWithData:opciones de datos:kNilOptions error:&error]; así es como se completan los productos, y cuando registro el contenido con la primera etiqueta previa en cuestión, se imprime:

facturar numberOfRowsInSection, si el products es tener valores o cero -

numberOfRowsInSection devuelve cero -

1 Respuestas

El problema es que lo que publicaste no es json. Debería ser

{
    "products":[
        {
            "id":19,
            "image_url":"http://localhost:8888/straightoffer/image/data/1330374078photography.jpg",
            "name":"Save $240 on your next photo session"
        },
        {
            "id":21,
            "image_url":"http://localhost:8888/straightoffer/image/data/1330373696massage.jpg",
            "name":"One Hour  Massage"
        }
    ]
}

Puedes usar http://jsonlint.com/ para validar sus archivos json.



He usado el archivo json anterior e hice lo siguiente:

NSBundle* bundle = [NSBundle mainBundle];
NSString *jsonPath = [bundle pathForResource:@"data" ofType:@"json"];
NSData *data = [NSData dataWithContentsOfFile:jsonPath];

NSError *error;
NSDictionary *products = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];

DLog(@"products: %i", [[products objectForKey:@"products"] count] );

[self.tableView reloadData];

El resultado es: productos: 2.

Deberías poder reproducir esto.

Respondido el 13 de diciembre de 12 a las 13:12

el json real que produje es el mismo que mencionaste, imprimo aquí lo que ios registra. el json es válido, lo he comprobado con la URL proporcionada. - Mirfan

Sí, necesito más ayuda porque mi formato json es correcto. - Mirfan

He señalado que los productos con mi código original están bien poblados en el método viewDidLoad, pero cuando llamo a numberOfRowsInSection me devuelve 0, ¿por qué se comporta así? - Mirfan

¿Ha agregado [self.tableView reloadData]; después de cargar los datos? - roland keesom

¿En qué método debo agregar esto? - Mirfan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.