Подтвердить что ты не робот

Как добавить nil в nsmutablearray?

NSArray *array = [[NSArray alloc] initWithObjects:@"ΕΛΤΑ",
                      @"ΕΛΤΑ COURIER", @"ACS", @"ACS ΕΞΩΤΕΡΙΚΟ", 
                      @"DHL", @"INTERATTICA", @"SPEEDEX", 
                      @"UPS", @"ΓΕΝΙΚΗ ΤΑΧΥΔΡΟΜΙΚΗ", @"ΜΕΤΑΦΟΡΙΚΕΣ ΕΞΩΤΕΡΙΚΟΥ", nil];

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

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

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

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

В чем причина того, что мое приложение сработает?

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

....
[array addObject:[NSNumber numberWithInt:2];
[array addObject:@"string"];
[array addObject:[NSNull null]];

Ответ 3

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

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

Ответ 4

Если вам действительно нужен элемент Null-ish в вашей коллекции, NSNull существует для этого.

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

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

Существует хорошее объяснение эта ссылка Apple.

Ответ 8

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

Ответ 9

передайте свой объект с помощью этого метода при добавлении в массив, чтобы избежать попытки вставить nil-объект из объектов.

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

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