我有一个可变数组,最初我遇到了范围问题。我得到了一些关于如何修复(有效)的建议,但现在数组不会替换给定索引处的对象。
以下是代码:
.h文件:
@interface myViewController: UIViewController {
NSMutableArray *myArray;
}
.m文件:
-(id)init {
self = [super init];
if (self){
myArray = [[NSMutableArray alloc] init];
}
return self;
}
-(void)viewDidLoad {
for (int x=0; x<6; x++) {
[myArray addObject:[NSNumber numberWithInt:0]]; //This adds the numbers just fine
}
[myArray insertObject:[NSNumber numberWithInt:1] atIndex:0]; //This does not insert the number 1 into index 0
}
我尝试了其他插入方法,例如:
replaceObjectAtIndex: withObject
还有其他人,但他们都没有工作......
我非常感谢任何帮助,因为这是我和完成我的第一个应用程序之间唯一的事情。
谢谢!
答案 0 :(得分:3)
首先,类名应该大写。我说“第一”,因为这表明你没有遵循惯例,这可能导致理解上的问题,如果没有消除错误。
其次,您确定要调用init
方法吗?如果您的对象是由接口文件加载实例化的,那么它可能不是,并且数组可能是nil。
答案 1 :(得分:0)
请务必先调用当前视图方法的addSubview。
YouViewNewController *youViewNewController=[[YouViewNewController alloc]init];
[self.view addSubview:youViewNewController.view]; // Calls viewDidLoad.
这项工作对我来说,
-(id)init {
self = [super init];
if (self){
myArray = [[NSMutableArray alloc] init];
NSLog(@"Lancement...");
}
return self;
}
-(void)viewDidLoad
{
NSLog(@"Calcul...");
for (int x=0; x<6; x++)
{
[myArray addObject:[NSNumber numberWithInt:0]]; //This adds the numbers just fine
}
[myArray insertObject:[NSNumber numberWithInt:1] atIndex:0]; //This does not insert the number 1 into index 0
NSLog(@"%i", [[myArray objectAtIndex:0]intValue]);
}
它有效!
答案 2 :(得分:0)
UIViewController
的指定初始值设定项为-initWithNibName:bundle:
。你应该覆盖它而不是-init
。您的-init
未被调用,因此您永远不会向myArray
分配任何内容;它只是nil
。