例如,我有@"John", @"Peter", ..., @"May"
并且需要构建NSArray
:
[@"John", @"Peter", ..., @"May"]
NSString
的数量未知,正在从导入文本文件中获取。由于NSArray
不支持追加新元素,我该如何创建NSArray
?
由于
更新,让我重新解释一下这个问题。如何创建跟随函数调用所需的动态数组参数?
[segmentedAttributes attributesWithTitlesArray:[NSArray arrayWithObjects:@"John", @"Peter", @"May", nil]]
答案 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时,必须将对象类型添加到数组中。
希望这会有所帮助