NSArray: добавить несколько объектов с одинаковым значением

Как я могу добавить несколько объектов в свой NSArray? Каждый объект будет иметь одинаковое значение.

Ex.

Я хочу, чтобы значение "SO" добавлялось в мой массив 10 раз.


person Matt S.    schedule 21.05.2010    source источник


Ответы (4)


Вы можете инициализировать массив набором объектов:

NSString * blah = @"SO";
NSArray * items = [NSArray arrayWithObjects: blah, blah, nil];

или вы можете использовать изменяемый массив и добавить объекты позже:

NSMutableArray * mutableItems = [[NSMutableArray new] autorelease];
for (int i = 0; i < 10; i++)
    [mutableItems addObject:blah];
person RedBlueThing    schedule 21.05.2010

Если вы не хотите использовать изменяемые массивы, а также не хотите повторять свой идентификатор N раз, используйте то, что NSArray можно инициализировать из массива в стиле C:

@interface NSArray (Foo) 
+ (NSArray*)arrayByRepeatingObject:(id)obj times:(NSUInteger)t;
@end

@implementation NSArray (Foo)
+ (NSArray*)arrayByRepeatingObject:(id)obj times:(NSUInteger)t {
    id arr[t];
    for(NSUInteger i=0; i<t; ++i) 
        arr[i] = obj;
    return [NSArray arrayWithObjects:arr count:t];    
}
@end

// ...
NSLog(@"%@", [NSArray arrayByRepeatingObject:@"SO" times:10]);
person Georg Fritzsche    schedule 21.05.2010

Просто добавьте их с помощью initWithObjects: (или любой другой метод, который вы предпочитаете). NSArray не требует, чтобы его объекты были уникальными, поэтому вы можете добавлять один и тот же объект (или одинаковые объекты) несколько раз.

person mipadi    schedule 21.05.2010

Теперь вы можете использовать синтаксис литерала массива.

NSArray *items = @[@"SO", @"SO", @"SO", @"SO", @"SO"];

Вы можете получить доступ к каждому элементу, например items[0];

person ahuth    schedule 17.01.2013