Objective c 如何在objective c中使用NSArray对象的NSArray?
我在.h文件中将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"
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访问错误。