如何在目标c中使用NSArray对象的NSArray



我将.h文件中的NSArray对象声明为

@property (nonatomic, assign) NSArray  *scnArray;

- (void)viewDidLoad下的.h文件中,我创建了三个不同的NSArray对象作为

NSArray  *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray  *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray  *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
[scnArray arrayByAddingObjectsFromArray:obj2];
[scnArray arrayByAddingObjectsFromArray:obj3];

如果我从任何其他功能访问这个scnArray

NSArray *caseArray = [scnArray objectAtIndex:index];//索引将为0、1、2…

我得了BAD_ACCESS_ERROR。这里的问题是什么?我如何纠正使用它?

试试这个:

NSArray  *obj1 = [[NSArray alloc] initWithObjects:@"1",@"0",@"0",nil];
NSArray  *obj2 = [[NSArray alloc] initWithObjects:@"0",@"3",@"0",nil];
NSArray  *obj3 = [[NSArray alloc] initWithObjects:@"0",@"0",@"5",nil];
scnArray = [[NSArray alloc] initWithArray:obj1];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj2];
scnArray = [scnArray arrayByAddingObjectsFromArray:obj3];

arrayByAddingObjectsFromArray:函数将数组B中的所有对象添加到数组A中,并返回结果(=同时包含A和B元素的数组)。

所以,你应该简单地得到这个结果…:-)

重要信息:scnArray必须是NSMutableArray数组,而不是NSArray(它正在更改,对吗?);所以一定要编辑那个部分。。。

另外:NSArray *caseArray = [scnArray objectAtIndex:index];-这没有任何意义。将数组设置为scnArray的ELEMENT?它不包含数组,对吧?它只包含这些数组的元素(我们添加的那些)。。。

arrayByAddingObject:不会将新对象添加到接收器中,而是创建一个全新的数组并返回它

scnArray = [[NSArray alloc] initWithObjects: obj1, obj2, obj3, nil];

不要忘记,如果您不使用ARC或GC,那么所有这些数组都需要在某个时候发布。

最新更新