2010-01-13 15 views
5

Estoy intentando copiar NSMutableArray a otro pero no me muestra nada en la UITableView:Copia NSMutableArray a otro

NSMutableArray *objectsToAdd= [[NSMutableArray alloc] initWithObjects:@"one",@"two"]; 

NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:objectsToAdd,nil]; 

NSMutableArray *list = [[NSMutableArray alloc] init]; 

[self.list addObjectsFromArray:myArray]; 

Nada aparecer! ¿Qué está mal?

Bloquea mi aplicación porque no tengo nulo en mi NSMutableArray ¿cómo puedo agregar nil a ella? addobject:nil no funciona se bloquea la aplicación:

static NSString * DisclosureButtonCellIdentifier = 
@"DisclosureButtonCellIdentifier"; 

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: 
         DisclosureButtonCellIdentifier]; 
if (cell == nil) { 
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
            reuseIdentifier: DisclosureButtonCellIdentifier] 
      autorelease]; 
} 
NSUInteger row = [indexPath row]; 

NSString *rowString =nil; 

rowString = [list objectAtIndex:row]; 


cell.textLabel.text = rowString; 

cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton; 
[rowString release]; 
return cell; 
+2

por qué algo se debe mostrar? publique su cellForRowAtIndexPath: código del método – Morion

+0

¿Cómo puedo actualizar nil a NSMutableArray con addObject? Bloquea mi aplicación en cellForRowAtIndexPath – stefanosn

Respuesta

19

La primera llamada a un alloc NSMutableArray más probable del accidente, ya que no tiene un terminador nulo en su lista de argumentos.

Además, tiene una lista de variables, listas y propiedades locales. Asegúrate de estar creando lo que crees que eres. Puede que tenga que hacer esto:

NSMutableArray *objectsToAdd= [[NSMutableArray alloc] initWithObjects:@"one",@"two", nil]; 

NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:objectsToAdd,nil]; 

self.list = [[NSMutableArray alloc] init]; 

[self.list addObjectsFromArray:myArray]; 
+0

NSMutableArray * myArray = [[NSMutableArray alloc] initWithArray: objectsToAdd]; initWithObjects espera objetos individuales, no una matriz mutable. También myArray no es mutable. – Hahnemann

0

El problema podría ser que la declaración local de list en la línea 4 entra en conflicto con la propiedad.

1

Existen algunos problemas ... Uno de los problemas es que está utilizando 'initWithObjects' y está agregando la matriz anterior. Esto parece un comportamiento no deseado ya que lo más probable es que desee agregar las cadenas @ "uno" y @ "dos" a la matriz. Lo más probable es que tenga la intención de utilizar initWithArray o addObjectsFromArray. (Haciéndolo como lo hizo, agregará NSMutableArray (no sus objetos) a la lista)

El segundo problema, cuando utiliza initWithObjects, necesita enumerar cada uno de los objetos y luego terminar la lista con un nil valor. (docs) En otras palabras, es necesario utilizar ...

NSMutableArray *objectsToAdd = [[NSMutableArray alloc] initWithObjects:@"One", @"Two", nil]; 
2

Esto podría ayudarle a:

NSMutableArray *result = [NSMutableArray arrayWithArray:array]; 

o

NSMutableArray *result = [array mutableCopy]; //recommended 
Cuestiones relacionadas