таНос как этотСохранение/загрузка массива 2D C с NSKeyedArchiver
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
адреса тогда, когда я загружаю данные не указывают к правильным данным больше? Или у меня есть проблема с «байтов», как описано в Documentation
Если это адрес вопрос, я должен поставить цикл при сохранении преобразовать *int
в NSData затем сохранить все те и воссоздать **int
с другой для цикла/malloc?
+1 для памяти, не находящейся в непрерывном блоке. Кроме того, Кит фактически архивирует указатели вместе с данными. Вы не должны архивировать указатели, потому что все они будут ошибочными, когда они будут разблокированы (указатели будут разными каждый раз). –