对象:如何向NSData添加2d C数组

时间:2016-12-05 05:59:31

标签: ios objective-c nsdata ios10

我有一个像这样的二维数组:

struct myStruct twoDarray[maxX][maxY];

我可以遍历数组并看到所有值都已正确分配。 我正在尝试将此数组放入NSData对象中,如下所示:

NSData *myData = [NSData dataWithBytes:&twoDarray length:sizeof(struct myStruct) * actualX * actualY];

此任务成功。 myData.length显示预期大小(struct * x * y)。这个问题的接受答案表明这是正确的语法:Is it possible to store 2D array in info.plist

最后,我尝试用循环读回数组:

int start = 0;
for (int x = 0; x < actualX; x++)
{
    for (int y = 0; y < actualY; y++)
    {
        struct myStruct readBack
        [myData getBytes:&readBack range:NSMakeRange(start, sizeof(struct myStruct))];
        start += sizeof(struct myStruct)
     }
}

但是,当x = 0时,我只在提取循环中获得有效数据。如果x = 0,则y的所有值的所有结构都存在且正确。对于任何大于或等于1的x,readBack中的所有值均为0。

我不确定此刻我出错了。如果我遍历twoDarray,它肯定有x的所有值的数据。当x大于或等于1时,为什么数据为零?

0 个答案:

没有答案