Ios 数组一直返回Null

Ios 数组一直返回Null,ios,objective-c,arrays,object,Ios,Objective C,Arrays,Object,所以我有一系列的学生名字。我正在运行测试数据,因此我将通过一个循环分配并初始化每个学生,然后将其放入stuArr-如果我记录student.hinit()方法,它将给出我期望的名称,但当我尝试在方法之外调用它们时,我会得到空值: - (void)viewDidLoad { [super viewDidLoad]; for (int i = 0; i < 5; i++) { stuArr = [stuArr arrayByAddingObject:[[Stud

所以我有一系列的学生名字。我正在运行测试数据,因此我将通过一个循环分配并初始化每个学生,然后将其放入
stuArr
-如果我记录
student.h
init()方法,它将给出我期望的名称,但当我尝试在方法之外调用它们时,我会得到空值:

- (void)viewDidLoad
{
    [super viewDidLoad];
    for (int i = 0; i < 5; i++) {
        stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]];
        id test = [stuArr objectAtIndexedSubscript:i];
        NSLog(@"%@", [test stuName]);
    }
}
-(void)viewDidLoad
{
[超级视图下载];
对于(int i=0;i<5;i++){
stuArr=[stuarraybyaddingobject:[[Student alloc]init]];
id test=[stuArr objectAtIndexedSubscript:i];
NSLog(@“%@,[test stuName]);
}
}

我是不是错过了一些重要的东西?如果需要,我可以输入我的Student.m文件,但那里的一切似乎都很好。

我想您应该在这一行之前分配+init stuArr:

stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]]; 
或者尝试这样做:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableArray *mutStudentsArray = [NSMutableArray array];

    for (int i = 0; i < 5; i++)
    {
        [mutStudentsArray addObject:[[Student alloc] init]];
        id test = [mutStudentsArray objectAtIndex:i];
        NSLog(@"%@", [test stuName]);
    }

    stuArr = [NSArray arrayWithArray:mutStudentsArray];
}
-(void)viewDidLoad
{
[超级视图下载];
NSMutableArray*mutStudentsArray=[NSMutableArray];
对于(int i=0;i<5;i++)
{
[mutStudentsArray addObject:[[Student alloc]init]];
id test=[mutsudentsarray objectAtIndex:i];
NSLog(@“%@,[test stuName]);
}
stuArr=[NSArray数组带数组:mutStudentsArray];
}

我想您应该在这一行之前分配+init stuArr:

stuArr = [stuArr arrayByAddingObject:[[Student alloc] init]]; 
或者尝试这样做:

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSMutableArray *mutStudentsArray = [NSMutableArray array];

    for (int i = 0; i < 5; i++)
    {
        [mutStudentsArray addObject:[[Student alloc] init]];
        id test = [mutStudentsArray objectAtIndex:i];
        NSLog(@"%@", [test stuName]);
    }

    stuArr = [NSArray arrayWithArray:mutStudentsArray];
}
-(void)viewDidLoad
{
[超级视图下载];
NSMutableArray*mutStudentsArray=[NSMutableArray];
对于(int i=0;i<5;i++)
{
[mutStudentsArray addObject:[[Student alloc]init]];
id test=[mutsudentsarray objectAtIndex:i];
NSLog(@“%@,[test stuName]);
}
stuArr=[NSArray数组带数组:mutStudentsArray];
}

tikhop是正确的:如果在for循环中填充数组,则应在填充之前初始化NSMutableArray(因为您正在更改循环中的数组,所以是可变数组)。在循环中,您可以使用
[array addObject:id]
向数组添加对象

[array arrayByAddingObject:id]
所做的是创建接收数组的副本并将新对象添加到末尾。 这意味着您将需要执行以下操作(虽然在for循环中这样做没有多大意义,但可能有助于理解):

-(void)viewDidLoad
{
[超级视图下载];
NSArray*stuArr=[NSArray alloc]init];//stuArr现在可以使用了
对于(int i=0;i<5;i++){
//someCopiedArr是一些现有的数组-arrayByAddingObject将复制someArr并添加一个对象
stuArr=[someArr arrayByAddingObject:[Student alloc]init];
id test=[stuArr objectAtIndexedSubscript:i];
NSLog(@“%@,[test stuName]);
}
}

最后,
stuArr
将是
someArr
的一个副本,只是将对象添加到末尾。

tikhop是正确的:如果在for循环中填充数组,则应在填充它之前初始化NSMutableArray(可变数组,因为您正在循环中更改数组)。在循环中,您可以使用
[array addObject:id]
向数组添加对象

[array arrayByAddingObject:id]
所做的是创建接收数组的副本并将新对象添加到末尾。 这意味着您将需要执行以下操作(虽然在for循环中这样做没有多大意义,但可能有助于理解):

-(void)viewDidLoad
{
[超级视图下载];
NSArray*stuArr=[NSArray alloc]init];//stuArr现在可以使用了
对于(int i=0;i<5;i++){
//someCopiedArr是一些现有的数组-arrayByAddingObject将复制someArr并添加一个对象
stuArr=[someArr arrayByAddingObject:[Student alloc]init];
id test=[stuArr objectAtIndexedSubscript:i];
NSLog(@“%@,[test stuName]);
}
}

最后,
stuArr
将是
someArr
的一个副本,只是在末尾添加了对象。

也许您忘记了在数组
stuArray
中分配+init?这不是它在循环中所做的吗?现在我将NSArray作为一个属性,在.m文件中进行合成。因此,您的init for Student分配了名称?@Howdy_McGee:不,您必须初始化数组,例如
stuArr=[[NSMutableArray alloc]init]
否则它是
nil
。也许你忘记了alloc+init数组
stuArray
?这不是它在循环中所做的吗?现在我将NSArray作为一个属性,在.m文件中进行合成。因此,您的init for Student分配了名称?@Howdy_McGee:不,您必须初始化数组,例如
stuArr=[[NSMutableArray alloc]init]
否则它是
nil
@Howdy\u McGee,你的意思是
[[NSMutableArray alloc]init]
,对吗?现在它只是静态的。我只是在使用测试数据,所以我认为没有必要使我可变。@CodaFi不,他的意思是[[NSArray alloc]init],因为他使用stuArr=[stuArr arrayByAddingObject:[[Student alloc]init]]而不是使用NSMuttableArray@tikhop我希望得到一个隐含的“你应该使用一个可变数组”:@Howdy_McGee,你的意思是
[[NSMutableArray alloc]init]
,对吗?现在它只是静态的。我只是使用测试数据,所以我认为没有必要让我变为可变的。@CodaFi不,他的意思是[[NSArray alloc]init],因为他使用stuArr=[stuArr arrayByAddingObject:[[Student alloc]init]而不是NSMuttableArray@tikhop我希望去参加一个非正式的聚会“您应该为此使用可变数组:”