无法从NSMutableArray中正确检索对象

时间:2014-11-20 18:41:58

标签: ios objective-c xcode

我将在这个可变数组中添加各种各样的东西,但首先我只是试图通过放入字符串,然后拉出字符串来确保它的工作原理。这是我的代码

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的文档,但是我很难理解它。我知道我必须错误地与数组进行交互,但我不确定究竟是多少。帮助将不胜感激。 - 谢谢!

4 个答案:

答案 0 :(得分:2)

您没有初始化testArray

NSMutableArray *testArray = [NSMutableArray array];

您可以使用新语法填充数组。如果你只需要添加三个项目的可变性,你可以使用一个非可变数组,如下所示:

NSArray *testArray = @[ @"1", @"2", @"3"];

如果确实需要可变性,请致电mutableCopy

NSMutableArray *testArray = [@[ @"1", @"2", @"3"] mutableCopy];

答案 1 :(得分:0)

嗯,那是因为testArraynil。你应该将第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];