【问题标题】:NSArray adding elementsNSArray 添加元素
【发布时间】:2010-10-21 04:16:19
【问题描述】:

我要创建一个动态的NSArray,也就是说,我不知道数组的大小,也不知道数组要包含哪些元素。元素需要动态添加到数组中。我查看了 NSArray 类参考。有一个名为arrayWithObjects 的方法,应该在初始化数组本身时使用。但我不知道如何实现我需要做的事情。

我需要做一些类似以下的事情:

NSArray *stringArray = [[NSArray init] alloc] ;  
for (int i = 0; i < data.size; i++){  
    stringArray.at(i) = getData(i);
}

【问题讨论】:

    标签: objective-c nsarray


    【解决方案1】:

    如果您创建NSArray,您将无法向其添加元素,因为它是不可变的。您应该尝试改用NSMutableArray

    另外,您颠倒了allocinit 的顺序。 alloc 创建一个实例,init 初始化它。

    代码看起来像这样(假设getData 是一个全局函数):

    NSMutableArray *stringArray = [[NSMutableArray alloc] init];
    for(int i=0; i< data.size; i++){
       [stringArray addObject:getData(i)];
    }
    

    【讨论】:

      【解决方案2】:

      如果您正在使用不可变数组,这是在数组中添加对象的另一种方法。这是线程安全的。

      您可以使用arrayByAddingObject 方法。有时候会好很多。这是关于它的讨论:NSMutableArray vs NSArray which is better

      【讨论】:

      • [array arrayByAddingObject:@"mažiukas"]; 不添加新元素。
      • @DariusMiliauskas 但它创建(并返回)一个新数组,其中包含原始数组中的所有元素加上新数组。有时它可能会很有帮助(例如,如果您更喜欢使用非可变数据结构,例如 NSArray)。
      【解决方案3】:

      将你的 NSArray 转换为 NSMutableArray,然后你可以动态添加值:

      NSMutableArray *mutableStringArray = [stringArray mutableCopy];
      [mutableStringArray addObject:@"theNewElement"];
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-27
        • 2010-12-30
        • 1970-01-01
        相关资源
        最近更新 更多