Estoy tratando de crear una matriz (Estados) de matrices (Ciudades). Siempre que trato de agregar un elemento a mi arsenal Ciudad consigo este error:NSMutableArray addObject, selector no reconocido
'NSInvalidArgumentException', reason: '*** +[NSMutableArray addObject:]: unrecognized selector sent to class 0x303097a0
Mi código es el siguiente. La línea de él los errores en es
[currentCities addObject:city];
estoy seguro de que tengo algunos problemas de gestión de memoria ya que todavía no lo entiendo del todo bien. Esperaba que alguien pudiera explicarme mi error.
if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL) == SQLITE_OK){
// We need to keep track of the state we are on
NSString *state = @"none";
NSMutableArray *currentCities = [NSMutableArray alloc];
// We "step" through the results - once for each row
while (sqlite3_step(statement) == SQLITE_ROW){
// The second parameter indicates the column index into the result set.
int primaryKey = sqlite3_column_int(statement, 0);
City *city = [[City alloc] initWithPrimaryKey:primaryKey database:db];
if (![state isEqualToString:city.state])
{
// We switched states
state = [[NSString alloc] initWithString:city.state];
// Add the old array to the states array
[self.states addObject:currentCities];
// set up a new cities array
currentCities = [NSMutableArray init];
}
[currentCities addObject:city];
[city release];
}
}
Si hacer la inicialización separada (que no debería, pero si lo hacen), se tiene que leer 'currentCities = [currentCities init ] '. Los inicializadores de NSArray nunca devuelven el receptor, y no se garantiza que ningún inicializador de clase lo haga. – Chuck
La razón por la que tengo el [currentCities init]; línea es porque tendrá que inicializar una nueva instancia cuando pasamos al siguiente estado. Al cambiar esa línea solucionó este problema, pero surgió otro problema, sin embargo, agregar el segundo paso que mencionó ([[NSMutableArray alloc] init]) solucionó ese problema. Gracias. –
Si inicializa una nueva instancia, también debería asignar una nueva instancia. – Wevah