Objective c将字符串对象添加到数组中

时间:2012-11-29 15:56:52

标签: iphone objective-c ios arrays ipad

我到处寻找这个,在线,堆栈溢出,但仍然无法解决我做错了什么。

我正在尝试向现有的NSMutableArray添加元素。但它在第4行崩溃了:

-[__NSArrayI addObject:]: unrecognized selector sent to instance 0x897b320

代码:

NSMutableArray *mystr = [[NSMutableArray alloc] init];

mystr = [NSArray arrayWithObjects:@"hello",@"world",@"etc",nil];

NSString *obj = @"hiagain";

[mystr addObject:obj];

我做错了什么?这让我发疯了!!!

5 个答案:

答案 0 :(得分:12)

你的数组不可变!使用NSMutableArray

mystr = [NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];

您获得无法识别的选择器,因为NSArray不包含 addObject 方法

答案 1 :(得分:3)

您的代码应为:

NSMutableArray *mystr = [[NSMutableArray alloc] initWithObjects:@"hello",@"world",@"etc",nil];

NSString *obj = @"hiagain";

[mystr addObject:obj];

答案 2 :(得分:0)

Ahhhhh已经发现了它

第2行应该是:

[NSMutableArray arrayWithObjects:@"hello",@"world",@"etc",nil];

很抱歉浪费你的时间!

答案 3 :(得分:0)

您要将NSArray而不是NSMutableArray的实例重新分配到mystr变量的第二行。

尝试这样的事情:

NSMutableArray *mystr = [NSMutableArray  arrayWithObjects:@"hello",@"world",@"etc",nil];

[mystr addObject:@"hiagain"]

答案 4 :(得分:0)

您最初将mystr创建为可变数组,但随后将其分配给下一行中的标准NSArray。不是调用“arrayWithObjects”,而是使用“addObjects”或其他一些不创建新的不可变数组的函数来添加每个项目。