Objective c 在多维数组中访问对象,Obj-c

Objective c 在多维数组中访问对象,Obj-c,objective-c,ios,multidimensional-array,Objective C,Ios,Multidimensional Array,我有一个阵列容纳其他阵列,但无法使其工作!!我试图从子数组中提取字符串值,我可以首先访问第一个子数组没有问题,但是当我尝试将标签更改为第二个数组中的对象时,我的程序崩溃了,我该如何处理这个问题 int count = 0; // variable to access the required sub array NSArray* myArray; // array holding other arrays UILabel* mylabel; // label to display my st

我有一个阵列容纳其他阵列,但无法使其工作!!我试图从子数组中提取字符串值,我可以首先访问第一个子数组没有问题,但是当我尝试将标签更改为第二个数组中的对象时,我的程序崩溃了,我该如何处理这个问题

int count = 0; // variable to access the required sub array 
NSArray* myArray; // array holding other arrays 
UILabel* mylabel; // label to display my string values from the array s

-(void) setLabel 
{

    NSArray* subArray = [myArray objectAtIndex: count];
    [myLabel setText:[subArray objectAtIndex:1]]; // this works fine
}

-(void) changeLabelToNextArray
{
    count ++
    [self setLabel]; //program crashes here when try to load label from next array 
} 

也许您可以尝试使用C数组:

id myArray[iMax][jMax];
subArray[i][j] = myArray[a][b];

你为什么这么做

[myLabel setText:[subArray objectAtIndex:1]];
如果

  • 子阵列在索引1处没有对象
  • 索引1处的对象不能设置为标签文本(即不能成为字符串)
  • 我认为更多关于阵列结构的信息将有助于更好地回答问题所在

    编辑(基于以下评论) 试试这个:

    NSArray* myArray;   // Contains 5 subarrays, each containing 5 strings
    
    UILabel* myLabel1;
    UILabel* myLabel2;
    UILabel* myLabel3;
    UILabel* myLabel4;
    UILabel* myLabel5;
    
    int count = 0;      // Keeps track of which subarray we are on
    
    - (void)setLabel
    {
        NSArray* subArray = [myArray objectAtIndex:count];
        [myLabel1 setText: [subArray objectAtIndex:0]]
        [myLabel2 setText: [subArray objectAtIndex:1]]
        [myLabel3 setText: [subArray objectAtIndex:2]]
        [myLabel4 setText: [subArray objectAtIndex:3]]
        [myLabel5 setText: [subArray objectAtIndex:4]]
        count = (count + 1) % 5;    // Ensures that count is always 0 to 4
    }
    

    现在,无论何时调用setLabel,只要在5个子数组中的每一个子数组中都有5个字符串,那么所有5个标签上的文本都应该更改。

    hey feanor,我有一个有5个子数组的数组,每个子数组有5个字符串,我试图显示,所以你总共有25个字符串,你想你的方法改变UILabel显示的文本,一次一个?有点,我将有5个标签,希望显示第一个子数组中的5个字符串,然后将5个标签更改为显示第二个子数组中的5个字符串好的,我修改了答案。每当需要更改标签文本时,调用setLabel方法。如果在myArray中的5个子数组中的每一个子数组中都有5个字符串,那么它应该可以工作。我建议添加一些防御机制,以防字符串丢失。类似于if([subArray objectAtIndex:4]){[myLabel5 setText:[subArray objectAtIndex:4]}