2010-01-13 3 views
5

J'essaie de copier NSMutableArray à un autre, mais il ne me montre rien au UITableView:Copie NSMutableArray à un autre

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

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

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

[self.list addObjectsFromArray:myArray]; 

Rien show up! Qu'est-ce qui ne va pas?

Il bloque mon application parce que je n'ai rien à NSMutableArray Comment puis-je ajouter rien? addobject:nil ne fonctionne pas, il se bloque l'application:

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

pourquoi quelque chose doit être affiché? postez votre cellForRowAtIndexPath: code de la méthode – Morion

+0

Mise à jour comment puis-je ajouter nil à NSMutableArray avec addObject? Il bloque mon application à cellForRowAtIndexPath – stefanosn

Répondre

19

Votre premier appel à alloc un NSMutableArray se bloque le plus probable, puisque vous ne disposez pas d'un terminateur nul dans votre liste d'arguments.

De plus, vous avez une liste locale de variables, de listes et de propriétés. Assurez-vous d'instancier ce que vous pensez être. Vous devrez peut-être de le faire:

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 attend des objets individuels, pas un tableau mutable. De plus, myArray n'est pas mutable. – Hahnemann

0

Le problème est peut-être que la déclaration locale de list en ligne 4 en conflit avec la propriété.

1

Il y a quelques problèmes ... Un problème est que vous utilisez 'initWithObjects' et que vous ajoutez le tableau précédent. Cela ressemble à un comportement indésirable puisque vous voudrez probablement ajouter les chaînes @ "one" et @ "two" au tableau. Vous avez probablement l'intention d'utiliser initWithArray ou addObjectsFromArray. (Faire la façon dont vous avez fait, ajoutera le NSMutableArray (pas ses objets) à la liste)

Le deuxième problème, lorsque vous utilisez initWithObjects, vous devez lister chacun des objets, puis mettre fin à la liste avec un nul valeur. (docs) En d'autres termes, vous devez utiliser ...

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

Cela pourrait vous aider:

NSMutableArray *result = [NSMutableArray arrayWithArray:array]; 

ou

NSMutableArray *result = [array mutableCopy]; //recommended 
Questions connexes