cómo crear cadena de gama
-
11-09-2019 - |
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
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.