Pregunta

estoy teniendo NSMutableArray el cual contiene información de los estudiantes, ahora sólo quiero extraer el nombre del estudiante y su nota media solamente, así que lo que hice

    NSMutableArray *stuCollection = [[NSMutableArray alloc] initWithCapacity:[students count]];

for (int i = 0; i < [students count]; i++) 
{
    if([students objectAtIndex:i] != NULL)
    {

    NSDictionary *dic = [students objectAtIndex:i];
    NSString *temp = [dic objectForKey:@"name"];

    [stuCollection  addObject:name];

    }   
}


for(int j=0; j< [stuCollection count]; j++)
{
    NSLOG(@"Name %@",[stuCollection objectAtIndex:j]);
}

Soy capaz de ejecutar este por la primera vez, pero cuando hago la búsqueda automática, puedo exe para el primero, segundo, tercero bucle pero luego terminar aplicaciones como la siguiente,

2009-12-02 14: 57: 37.908 AppBuzz [13073: 207] * Terminación de aplicación debido a excepción no detectada 'NSInvalidArgumentException', razón: '* - [NSCFArray InsertObject: atIndex:]: intente insertar nil' 2009-12-02 14: 57: 37.916 AppBuzz [13073: 207] de pila: (     820145437,     837578260,     819694387,     819694291,     814683071,     814716415,     814716245,     17529,     24097,     814480795,     819893443,     819891231,     858682228,     861592624,     861585968,     8997,     8860 ) Terminar llamada después de lanzar una instancia de 'NSException' Programa recibió la señal: “SIGABRT”

.

cómo se puede mejorar

gracias

¿Fue útil?

Solución

¿Usted entiende afirmaciones?

assert(students);
assert([students count]);

NSMutableArray * stuCollection = [[NSMutableArray alloc] initWithCapacity:[students count]];
assert(stuCollection);

for (int i = 0; i < [students count]; i++) {
    if ([students objectAtIndex:i] != NULL) {

        NSDictionary * dic = [students objectAtIndex:i];
        assert(dic);

        NSString * temp = [dic objectForKey:@"name"];
        assert(temp);

        assert(name);

        [stuCollection addObject:name];
    }
}
...

Otros consejos

Dado que parece que los estudiantes es una colección de cacao, se puede utilizar lo siguiente:

NSArray *studentNames = [students valueForKey:@"name"];

Vea el KVC conjunto de matrices y operadores para obtener más información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top