我将在这个可变数组中添加各种各样的东西,但首先我只是试图通过放入字符串,然后拉出字符串来确保它的工作原理。这是我的代码
str1=@"1";
str2=@"2";
str3=@"3";
NSMutableArray *testArray;
[testArray addObject:str1];
[testArray addObject:str2];
[testArray addObject:str3];
retrieve =[testArray objectAtIndex:1];
NSLog(@"the test number is %@",retrieve);
问题是我的字符串:检索等于" null"从数组中接收到字符串后。我不确定自己做错了什么,我看过Apple的文档,但是我很难理解它。我知道我必须错误地与数组进行交互,但我不确定究竟是多少。帮助将不胜感激。 - 谢谢!
答案 0 :(得分:2)
您没有初始化testArray
:
NSMutableArray *testArray = [NSMutableArray array];
您可以使用新语法填充数组。如果你只需要添加三个项目的可变性,你可以使用一个非可变数组,如下所示:
NSArray *testArray = @[ @"1", @"2", @"3"];
如果确实需要可变性,请致电mutableCopy
:
NSMutableArray *testArray = [@[ @"1", @"2", @"3"] mutableCopy];
答案 1 :(得分:0)
嗯,那是因为testArray
是nil
。你应该将第4行改为
NSMutableArray *testArray = [NSMutableArray array];
答案 2 :(得分:0)
你的数组是零。
你错过了 NSMutableArray * testArray = [NSMutableArray array];
答案 3 :(得分:0)
澄清别人告诉你的事情:
这一行
NSMutableArray *testArray;
不创建数组。它创建一个指针变量,可用于指向可变数组。它开始包含一个零值(零,指向任何东西。)
这就像一个指向空地的邮政地址。
您需要创建(分配)并初始化可变数组对象才能使用它。 (继续我们的比喻,在地址生效之前,你必须建一个房子并在它前面放一个邮箱。)
所以你需要说:
testArray = [@[ @"1", @"2", @"3"] mutableCopy];
打破这一点:
内在部分,
@[ @"1", @"2", @"3"]
创建一个包含3个字符串对象的不可变数组。
然后我们要求不可变数组创建自己的可变副本。我们将新创建的可变数组的地址保存到指针变量testArray中。
我们可以分三步完成:
NSMutableArray *testArray;
NSArray *tempArray = @[ @"1", @"2", @"3"];
testArray = [tempArray mutableCopy];
或者一下子,就像@dasblinkenlight的代码:
NSMutableArray *testArray = [@[ @"1", @"2", @"3"] mutableCopy];