我有一个像这样的二维数组:
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时,为什么数据为零?