【问题标题】:NSArray: add multiple objects with same valueNSArray:添加具有相同值的多个对象
【发布时间】:2010-05-21 00:07:10
【问题描述】:

如何向我的 NSArray 添加多个对象?每个对象都将具有相同的值。

例如

我希望将值“SO”添加到我的数组中 10 次

【问题讨论】:

    标签: objective-c cocoa nsarray repeat


    【解决方案1】:

    你可以用一组对象来初始化数组:

    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];
    

    【讨论】:

      【解决方案2】:

      如果您不想使用可变数组,也不想重复标识符 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]);
      

      【讨论】:

        【解决方案3】:

        我的 ¢2:

        NSMutableArray * items = [NSMutableArray new];
        while ([items count] < count)
            [items addObject: object];
        

        【讨论】:

          【解决方案4】:

          只需使用initWithObjects:(或您喜欢的任何方法)添加它们。 NSArray 不要求其对象是唯一的,因此您可以多次添加相同的对象(或相等的对象)。

          【讨论】:

            【解决方案5】:

            现在,您可以使用数组字面量语法了。

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

            您可以访问每个元素,例如items[0];

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-01-18
              • 2018-07-10
              • 1970-01-01
              • 1970-01-01
              • 2016-10-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多