Ios 访问NSMutableArray中的NSString
当我使用NSString对象初始化而不是手动输入文本时,为什么不能访问NSMutableArray的第4个元素 例如: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 * 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