Ios 访问NSMutableArray中的NSString

Ios 访问NSMutableArray中的NSString,ios,objective-c,nsstring,nsmutablearray,Ios,Objective C,Nsstring,Nsmutablearray,当我使用NSString对象初始化而不是手动输入文本时,为什么不能访问NSMutableArray的第4个元素 例如: NSString * d = @"d"; self.arr = [[NSMutableArray alloc] initWithObjects: [NSMutableArray arrayWithObjects:@"A",@"B",@"C",d,nil], [NSMutableArray arrayWithObjects:@"A",@"

当我使用NSString对象初始化而不是手动输入文本时,为什么不能访问NSMutableArray的第4个元素

例如:

NSString * d = @"d";

self.arr = [[NSMutableArray alloc] initWithObjects:
          [NSMutableArray arrayWithObjects:@"A",@"B",@"C",d,nil],
          [NSMutableArray arrayWithObjects:@"A",@"B",@"C",@"d",nil],
           nil];
这会导致越界错误(NSString):

这不是(@“d”):


为什么会发生这种情况?他们肯定是同一件事吗?我希望减少写“d”的次数。

它们应该是一样的。。。我试着在我的项目中跟随。它工作得很好

NSString * d = @"d";

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
                [NSMutableArray arrayWithObjects:@"A",@"B",@"C",d,nil],
                [NSMutableArray arrayWithObjects:@"A",@"B",@"C",@"d",nil],
                nil];

NSLog(@"0 array 4th:%@",[[array objectAtIndex:0] objectAtIndex:3]);
NSLog(@"1 array 4th:%@",[[array objectAtIndex:1] objectAtIndex:3]);
输出如下:

2013-12-16 17:05:30.092 Demo[1005:60b] 0 array 4th:d
2013-12-16 17:05:30.094 Demo[1005:60b] 1 array 4th:d

您是否尝试过使用
NSLog(@“%@,[[self.arr firstObject]objectAtIndex:3])这是用于测验类型的应用程序吗?还有其他方法可以存储答案。这段代码工作得很好。没有越界错误。我觉得这段代码不错。要尝试的一件事是记录整个阵列,看看它是否符合您的期望(
NSLog(@“%@”,self.arr)
)。可能
d
并没有真正设置为您认为的值,而且在创建数组时实际上为零。请清理项目,关闭并重新打开Xcode。再跑一次。
NSString * d = @"d";

NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:
                [NSMutableArray arrayWithObjects:@"A",@"B",@"C",d,nil],
                [NSMutableArray arrayWithObjects:@"A",@"B",@"C",@"d",nil],
                nil];

NSLog(@"0 array 4th:%@",[[array objectAtIndex:0] objectAtIndex:3]);
NSLog(@"1 array 4th:%@",[[array objectAtIndex:1] objectAtIndex:3]);
2013-12-16 17:05:30.092 Demo[1005:60b] 0 array 4th:d
2013-12-16 17:05:30.094 Demo[1005:60b] 1 array 4th:d