2010-01-13 13 views
5

Sto provando a copiare NSMutableArray ad un altro, ma la cosa non mi mostra nulla al UITableView:Copia NSMutableArray ad un altro

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

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

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

[self.list addObjectsFromArray:myArray]; 

Niente spettacolo in su! Che c'è?

Arresta la mia app perché non ho nulla sul mio NSMutableArray come posso aggiungerlo a zero? addobject:nil non funziona si blocca l'applicazione:

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

perché dovrebbe essere visualizzato qualcosa? inserisci il tuo cellForRowAtIndexPath: codice del metodo – Morion

+0

Aggiorna come posso aggiungere nil a NSMutableArray con addObject? Arresta la mia app su cellForRowAtIndexPath – stefanosn

risposta

19

La chiamata iniziale ad alloc un NSMutableArray andrà in crash molto probabilmente, dal momento che non si dispone di un terminatore nullo nella tua lista di argomenti.

Inoltre, si dispone di una variabile locale, un elenco e una proprietà, elenco. Assicurati di creare un'istanza di ciò che pensi di essere. Potrebbe essere necessario fare questo:

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 prevede singoli oggetti, non una matrice mutabile. Anche myArray non è mutabile. – Hahnemann

0

Il problema potrebbe essere che la dichiarazione locale della list in linea 4 in conflitto con la proprietà.

1

Ci sono alcuni problemi ... Un problema è che si sta utilizzando 'initWithObjects' e si aggiunge l'array precedente. Questo sembra un comportamento indesiderato poiché è molto probabile che tu voglia aggiungere le stringhe @ "one" e @ "two" all'array. Molto probabilmente hai intenzione di utilizzare initWithArray o addObjectsFromArray. (Facendolo nel modo in cui hai fatto, aggiungerai NSMutableArray (non i suoi oggetti) alla lista)

Il secondo problema, quando usi initWithObjects, devi elencare ciascuno degli oggetti e quindi terminare l'elenco con un nullo valore. (docs) In altre parole, è necessario utilizzare ...

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

Questo potrebbe aiutare:

NSMutableArray *result = [NSMutableArray arrayWithArray:array]; 

o

NSMutableArray *result = [array mutableCopy]; //recommended 
Problemi correlati