4 Stimmen

Kann ich Array Größe mit NSMutableArray zuweisen?

Ich war früher ein Java-Programmierer, der das Array das allererste Mal deklarieren muss, wie hier:

int[] anArray;              // declares an array of integers
anArray = new int[10];      // allocates memory for 10 integers

Ich weiß nicht, ob die Objective C, NSMutableArray auch geben mir diese Fähigkeit oder nicht. Eigentlich möchte ich ein 10*10 Array machen. thz im Voraus. Ich versuche, dies zu tun:

myArray = [[NSMutableArray alloc] initWithCapacity:10]; 

for (int i=0; i<10; i++) {
    myArray[i] = [[NSMutableArray alloc] initWithCapacity:10]; 
}

Aber es treten Fehler auf, die mir eine inkompatible Typzuweisung melden.

0voto

mipadi Punkte 377834

Sie können auf Cocoa-Array-Objekte nicht mit der Klammerschreibweise zugreifen. Ihr zweiter Teil des Codes sollte sein:

NSMutableArray *myArray = [[NSmutableArray alloc] initWithCapacity:10];
for (int i = 0; i < 10; i++) {
    [myArray insertObject:[NSMutableArray arrayWithCapacity:10] atIndex:i];    // Note: not using myArray[i]!
}

0 Stimmen

Dies war absolut korrekt, als es geschrieben wurde, ist aber jetzt mit dem Aufkommen von Literalen/Teilschriften überholt.

0voto

Georg Schölly Punkte 120083

Es gibt zwei Möglichkeiten, dies zu tun.

Einfaches altes C

Wenn Sie Objekte speichern wollen, sollten Sie die id Typ anstelle von int .

int myarray[10][10];
myarray[5][2] = 412;

Objektiv-C

NSArray's sind nicht dafür gedacht, Leerzeichen ohne Objekte zu haben, wenn Sie sie brauchen, können Sie verwenden [NSNull null] aber wenn das der Fall ist, wäre ein C-Array ohnehin besser.

NSMutableArray *myArray = [[NSMutableArray alloc] initWithCapacity:10]; 

for (int i=0; i < 10; i++) {
    NSMutableArray *innerArray = [[NSMutableArray alloc] initWithCapacity:10];
    for (int j=0; j < 10; j++) {
        [innerArray addObject:[NSNull null]];
    }
    [myArray addObject:innerArray];
    [innerArray release];
}

[[myArray objectAtIndex:5]
      replaceObjectAtIndex:2 withObject:[NSNumber numberWithInteger:123]];

0voto

rambodrahmani Punkte 89

Sie können den folgenden Code verwenden, um die Größe des NSMutableArray zu ändern, nachdem es erstellt wurde:

@interface NSMutableArray (Resizing)
- (NSMutableArray *)resize:(NSInteger)newSize;
@end

@implementation NSMutableArray (Resizing)
- (NSMutableArray *)resize:(NSInteger)newSize
{
    int size = (newSize > [self count]) ? self.count : newSize;
    NSMutableArray *array = [NSMutableArray arrayWithCapacity:size];
    for (int i = 0; i < size; i++){
        [array addObject:[self objectAtIndex:i]];
    }   
    return array;
}
@end

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X