NSMutableArray replaceObjectAtIndex:withObject:Not Working

时间:2012-04-11 19:50:52

标签: iphone objective-c ios arrays nsmutablearray

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

以下是代码:

.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

还有其他人,但他们都没有工作......

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

谢谢!

3 个答案:

答案 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