에 2 차원 C 배열을 추가하는 방법 나는 그런 같은 두 가지 차원 배열을 가지고있다. 나는 그런 같은있는 NSData 객체로,이 배열을 넣어려고 :의 Obj-C는 :</p> <pre><code>struct myStruct twoDarray[maxX][maxY]; </code></pre> <p>내가 배열을 반복하고 모든 값이 제대로 할당되었는지 볼 수있는 NSData
는NSData *myData = [NSData dataWithBytes:&twoDarray length:sizeof(struct myStruct) * actualX * actualY];
이 할당이 성공합니다. myData.length
은 예상되는 크기 (struct * x * y)를 보여줍니다. 난 단지 추출 루프 경우에 유효한 데이터를 얻을, 그러나
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)
}
}
: 나는 루프와 배열을 다시 읽으려고, 결국 Is it possible to store 2D array in info.plist
:이 질문에 대한 허용 대답이 올바른 구문 제안 x = 0 인 경우, y의 모든 값에 대한 모든 구조가 존재하고 정확합니다. 1보다 크거나 같은 임의의 x에 대해 readBack
의 모든 값은 0입니다.
내가 잘못 될 때가 어디인지 확신 할 수 없습니다. twoDarray
을 반복 할 경우 확실히 x의 모든 값에 대한 데이터가 있습니다. x가 1보다 크거나 같을 때 데이터가 제로가되지 않는 이유는 무엇입니까?
를 작성 유사하게 데이터를 다시 읽을 수 있습니다 : 당신의 접근을 위해 하나의 배열을 사용하고 한 차원 인덱스에 두 개의 차원 인덱스를 변환하는 것이 더 쉽습니다 임시 데이터 객체에 대한 데이터는 필요하지 않습니다. 대신 ['appendData : length :'] (https://developer.apple.com/reference/foundation/nsmutabledata/1407704-appendbytes?language=objc)를 사용할 수 있습니다. – clemens
아 그래, 그게 더 좋을거야 – Fonix
그래, 반복적 인 접근 방식은 확실히 작동하고 아마도 받아 들일 만하다. 하지만 전체 블록을 복사하는 단일 작업이 필요했습니다. 두 번째 C- 배열이 연속적이지 않고 순차적 인 메모리인지 궁금합니다. – Thunk