Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/117.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在objective c中使用NSArray对象的NSArray?_Objective C_Ios_Xcode_Cocoa - Fatal编程技术网

Objective c 如何在objective c中使用NSArray对象的NSArray?

Objective c 如何在objective c中使用NSArray对象的NSArray?,objective-c,ios,xcode,cocoa,Objective C,Ios,Xcode,Cocoa,我在.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"

我在.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


我收到
访问错误\u错误
。这里的问题是什么?如何更正以使用它?

arrayByAddingObject:
不会将新对象添加到接收器,而是创建一个全新的数组并返回它。您应该使用以下内容:

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

不要忘记,如果您不使用ARC或GC,那么所有这些阵列都需要在某个时候释放。

试试这个:

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];
函数将数组B中的所有对象添加到数组A,并返回结果(=同时包含A和B元素的数组)

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

重要提示:
scnArray
必须是
NSMutableArray
数组,而不是
NSArray
(它正在更改,对吧?);所以确保你也编辑了那个部分


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

您正在将对象从
obj2
obj3
添加到
scnArray
中,但您无法获取(或存储)数组合并后产生的数组。。。看看我的答案……你的属性也应该是
strong
retain
,而不是assign。谢谢迈克,将属性更改为strong效果很好。谢谢大家的意见。我之前用过这个。但我以NSArray*caseArray=[scnArray objectAtIndex:1]的形式访问它;我不断收到EXE\u错误\u访问错误。