Маллок, как это
int **terrain;
terrain = malloc(sizeof(int*) * mapSize.x);
for (int i = 0; i < mapSize.x; i++) {
terrain[i] = malloc(mapSize.y * sizeof(int));
}
Используйте это.
Конвертировать в NSdata вот так перед сохранением
NSData *data=[NSData dataWithBytes:terrain length:(30*sizeof(int*) +30*30*sizeof(int) )];
[rootObject setValue:data forKey:@"terrain"];
[NSKeyedArchiver archiveRootObject: rootObject toFile: path];
загрузка в NSdata с последующим преобразованием обратно в int**
rootObject = [NSKeyedUnarchiver unarchiveObjectWithFile:path];
NSData *data = [rootObject valueForKey:@"terrain"];
terrain =(int**) [data bytes];
При использовании этого кода он сохраняет адреса *int
, а затем, когда я загружаю данные, он больше не указывает на правильные данные?
Или у меня есть проблема с "порядком байтов", как описано в
Документация
Если это проблема с адресом, должен ли я сохранять цикл for при сохранении, чтобы преобразовать *int
в NSData, затем сохранить все и воссоздать **int
с другим для loop / malloc?