1

我有一个可变数组,最初我在使用范围时遇到了问题。我得到了一些关于如何解决这个问题的建议(这很有效),但现在数组不会替换给定索引处的对象。

这是代码:

.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

还有一些其他的,但没有一个起作用....

我将不胜感激任何帮助,因为这是我和完成我的第一个应用程序之间唯一的事情。

谢谢!

4

3 回答 3

3

首先,类名应该大写。我说“第一”是因为这表明你没有遵循约定,如果不是完全错误的话,可能会导致理解上的问题。

其次,您确定该init方法正在被调用吗?如果您的对象是由接口文件加载实例化的,那么它可能不是并且数组可能为零。

于 2012-04-11T20:25:32.703 回答
0

UIViewController为is指定的初始值设定项-initWithNibName:bundle:。您应该覆盖它而不是-init. 你-init没有被调用,所以你从来没有分配任何东西给myArray; 它仍然存在nil

于 2012-04-12T15:44:26.077 回答
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]);
}

有用 !

于 2012-04-11T22:02:45.970 回答