NSArray: добавить несколько объектов с одинаковым значением - PullRequest
7 голосов
/ 21 мая 2010

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

Ex.

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

Ответы [ 5 ]

8 голосов
/ 21 мая 2010

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

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];
5 голосов
/ 21 мая 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]);
4 голосов
/ 03 июня 2013

My ¢ 2:

NSMutableArray * items = [NSMutableArray new];
while ([items count] < count)
    [items addObject: object];
2 голосов
/ 17 января 2013

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

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

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

2 голосов
/ 21 мая 2010

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

...