2010-01-13 16 views
5

Próbuję skopiować NSMutableArray do drugiego, ale nie pokazuje mi nic na UITableView:Kopiowanie NSMutableArray do innego

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

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

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

[self.list addObjectsFromArray:myArray]; 

Nic pokazać się! Co jest nie tak?

To powoduje awarię mojej aplikacji, ponieważ nie mam zerowej wartości w moim NSMutableArray jak mogę dodać do niej zero? addobject:nil nie działa wywala aplikację:

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

dlaczego coś powinno być wyświetlane? opublikuj swoją komórkęForRowAtIndexPath: kod metody – Morion

+0

Zaktualizuj, w jaki sposób mogę dodać zero do NSMutableArray z addObject? To powoduje awarię mojej aplikacji w komórceForRowAtIndexPath – stefanosn

Odpowiedz

19

pierwszego połączenia do Alloc to NSMutableArray najprawdopodobniej awarii, ponieważ nie mają zerowy terminatora na liście argumentów.

Ponadto istnieje lista zmiennych lokalnych, lista i właściwość. Upewnij się, że tworzysz to, o czym myślisz, że jesteś. Być może trzeba to zrobić:

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 oczekuje pojedynczych obiektów, a nie tablicy zmiennych. Również myArray nie jest zmienny. – Hahnemann

0

Problemem może być to, że lokalna deklaracja list w wierszu 4 konflikty z nieruchomości.

1

Jest kilka problemów ... Jednym z problemów jest to, że używasz "initWithObjects" i dodajesz poprzednią tablicę. To wydaje się niechcianym zachowaniem, ponieważ najprawdopodobniej chcesz dodać ciągi @ "one" i @ "two" do tablicy. Najprawdopodobniej zamierzałeś użyć initWithArray lub addObjectsFromArray. (Robiąc tak, jak to zrobiłeś, dodasz do listy NSMutableArray (nie jej obiekty)

Drugi problem, gdy korzystasz z initWithObjects, musisz wyświetlić listę każdego z obiektów, a następnie zakończyć listę z wartością zerową wartość. (docs) Innymi słowy, trzeba użyć ...

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

To może pomóc:

NSMutableArray *result = [NSMutableArray arrayWithArray:array]; 

lub

NSMutableArray *result = [array mutableCopy]; //recommended 
Powiązane problemy