将动态创建的字符串添加到数组中

时间:2011-08-26 10:34:34

标签: iphone nsmutablearray nsarray

我正在创建一个iphone应用程序,我想将动态选择的时间存储到数组中,但无法实现将字符串存储到数组中的方法。以下是我正在使用的代码,但它没有提供输出。

- (void)storetimeintoanarray:(id)sender
{
    NSDateFormatter *df3 = [[NSDateFormatter alloc] init];
    [df3 setDateFormat:@"hh:mm:ss"];
    timestr = [NSString stringWithFormat:@"%@",[df3 stringFromDate:objtimepicker.date]];
    NSLog(@"time is:%@",timestr);
    test = [[NSArray alloc]init];
    [test arrayByAddingObject:timestr];
    NSLog(@"array time:%@",test);
}

5 个答案:

答案 0 :(得分:1)

分配后,您不应再次分配数组。 arrayByAddingObject返回自动发布的新数组。如果要动态添加对象,也请使用NSMutableArray。 将代码更改为

test = [[NSMutableArray alloc]init];
[test addObject:timestr];

答案 1 :(得分:1)

你必须声明数组可变对象。

test = [[NSMutableArray alloc]init];
[test addObject:timestr];

答案 2 :(得分:1)

如果您想在创建后更改它,则应使用NSMutableArray

NSMutableArray* arr = [[NSMutableArray alloc] init];
[arr addObject:timestr];

要创建包含单个对象的数组,可以使用:

NSArray* arr = [NSArray arrayWithObject:timestr];

答案 3 :(得分:1)

您必须将arrayByAddingObject:方法的结果分配给新的数组,如:

NSArray *newone = [test arrayByAddingObject:timestr];

答案 4 :(得分:0)

您应该使用NSMutableArray及其方法addObject:而不是NSArray。 [test arrayByAddingObject:timestr];对您的数组测试没有任何作用,它创建新数组