как добавить ноль в nsmutablearray? - PullRequest
51 голосов
/ 13 января 2010
NSArray *array = [[NSArray alloc] initWithObjects:@"ΕΛΤΑ",
                      @"ΕΛΤΑ COURIER", @"ACS", @"ACS ΕΞΩΤΕΡΙΚΟ", 
                      @"DHL", @"INTERATTICA", @"SPEEDEX", 
                      @"UPS", @"ΓΕΝΙΚΗ ΤΑΧΥΔΡΟΜΙΚΗ", @"ΜΕΤΑΦΟΡΙΚΕΣ ΕΞΩΤΕΡΙΚΟΥ", nil];

Это работает, потому что в конце у него ноль.

Но я добавляю объекты вот так: addObject:name и т.д ... Поэтому в конце я должен добавить ноль, я делаю это addObhect: ноль, но когда я запускаю приложение, оно все равно падает на cellForRowAtIndexPath:

как я могу сделать эту работу?

Хорошо, мне не нужно добавлять ноль

Какова причина того, что мое приложение аварийно завершает работу?

Ответы [ 9 ]

230 голосов
/ 13 января 2010

Если вам необходимо добавить объект nil в коллекцию, используйте класс NSNull:

Класс NSNull определяет одноэлементный объект, используемый для представления нулевых значений в объектах коллекции (которые не допускают нулевые значения).

Предполагая, что "массив" имеет тип NSMutableArray:

....
[array addObject:[NSNumber numberWithInt:2];
[array addObject:@"string"];
[array addObject:[NSNull null]];
26 голосов
/ 13 января 2010

Вам не нужно звонить [addObject:nil]

nil в initWithObjects: используется только для указания метода, где заканчивается список, из-за того, как работает C varargs. Когда вы добавляете объекты один за другим с addObject:, вам не нужно добавлять ноль.

19 голосов
/ 13 января 2010

Вы не можете добавить ноль, когда звоните addObject.

15 голосов
/ 13 января 2010

Если вы действительно хотите, чтобы в вашей коллекции был нулевой элемент, для этого есть NSNull .

6 голосов
/ 17 октября 2014

Вам нужно добавить NSNull класс, и лучший способ сделать это так:

NSArray *array = @[ @"string", @42, [NSNull null] ];

Я лично рекомендую использовать определенное значение, например 0, вместо нуля или нуля в вашем дизайне кода, но иногда вам нужно добавить нуль.

Это хорошее объяснение от этой ссылки Apple .

6 голосов
/ 13 января 2010

ноль используется для завершения массива

5 голосов
/ 13 января 2010

nil не является объектом, который вы можете добавить в массив: массив не может содержать nil. Вот почему addObject:nil падает.

0 голосов
/ 09 декабря 2016

передайте ваш объект через этот метод при добавлении в массив, чтобы избежать попытки вставить нулевой объект из объектов сбой.

-(id) returnNullIfNil:(id) obj  {
    return (obj == nil) ? ([NSNull null]) : (obj);
}

[NSNull null] возвращает нулевой объект, представляющий ноль.

0 голосов
/ 13 января 2010

Вы не можете добавить объект к NSArray, потому что этот класс неизменен. Вы должны использовать NSMutableArray, если хотите изменить массив после его создания.

...