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

use*_*926 9 xcode cocoa objective-c ios

NSArray在.h文件中声明了一个对象

@property (nonatomic, assign) NSArray  *scnArray;
Run Code Online (Sandbox Code Playgroud)

- (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];
Run Code Online (Sandbox Code Playgroud)

如果我从任何其他函数访问此scnArray

NSArray *caseArray = [scnArray objectAtIndex:index];//索引将是0,1,2 ......

我到了BAD_ACCESS_ERROR.这里有什么问题,如何正确使用呢?

Dr.*_*eon 7

试试这个 :

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];
Run Code Online (Sandbox Code Playgroud)

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

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

重要提示: scnArray必须是一个NSMutableArray数组,而不是NSArray(它正在改变,对吧?); 所以一定要编辑那个部分......

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