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

时间:2011-08-26 10:07:17

标签: objective-c ios multidimensional-array

我有一个包含其他数组的数组,但是无法让它工作!即时通讯尝试从subArrays中提取字符串值我可以先访问第一个子数组没有问题但是当我尝试将标签更改为第二个数组中的对象时,我的程序会崩溃任何关于我应该如何处理它的问题?

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 
} 

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你为什么这样做?

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

如果

,这会崩溃
  1. subArray在索引1
  2. 没有对象
  3. 索引1处的对象不能设置为标签文本(即不能成为字符串)
  4. 我认为有关阵列结构的更多信息将有助于更好地解决问题所在。

    编辑(根据以下评论) 试试这个:

    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个标签上发生变化。