如何创建未知NSStrings的NSArray?

时间:2011-05-04 04:05:46

标签: iphone objective-c nsarray

例如,我有@"John", @"Peter", ..., @"May"并且需要构建NSArray

 [@"John", @"Peter", ..., @"May"]

NSString的数量未知,正在从导入文本文件中获取。由于NSArray不支持追加新元素,我该如何创建NSArray

由于

更新,让我重新解释一下这个问题。如何创建跟随函数调用所需的动态数组参数?

 [segmentedAttributes attributesWithTitlesArray:[NSArray arrayWithObjects:@"John", @"Peter", @"May", nil]]

3 个答案:

答案 0 :(得分:5)

你没有。

你误解了图书馆的行为。

确实存在一个方便构造函数arrayWithObjects:,因此使用:

NSArray* array=[NSArray arrayWithObjects:@"Low", @"Medium", @"High", nil];

但是这个不会在最后创建一个nil的数组。这个nil只是表示可变长度参数列表的结尾。它只创建一个包含三个元素的NSArray,而不是最后一个nil的四个元素。

您只需创建一个包含所需元素的NSArray,并将其传递给库函数。例如:

NSMutableArray*array=[NSMutableArray array];
while(...){
    ... get a string ...
    [array addObject: string];
}

SCSegmentedAttributes*attributes=[SCSegmentedAttributes attributesWithSegmentTitlesArray:array];

应该有效,无需添加nil[NSNull null]

答案 1 :(得分:0)

您无法将nil存储在Foundation集合类中。相反,您可以使用[NSNull null]。使用NSMutableArray,然后当您想添加'nil'对象时,请使用[NSNull null]

请注意,如果您想稍后查看对象是否为[NSNull null],则该方法每次都会返回相同的实例,因此您可以执行直接点等式测试,如下所示:

for (id anObject in myArray) {
    if (anObject == [NSNull null]) {
        NSLog(@"object is nil");
    }
    else {
        NSLog(@"object is not nil: %@", anObject);
    }
}

答案 2 :(得分:0)

创建可变数组,然后使用

NSString *myString = [NSString stringWithFormat:@"ur new string"];

[myArray addObject:myString];

在可变数组中添加新的abject时,必须将对象类型添加到数组中。

希望这会有所帮助