Проблемы NSUserDefault.сохранять / извлекать данные, включая сетку UIImageView [] [] - PullRequest
0 голосов
/ 16 июля 2011

Я пытаюсь сохранить информацию в игре, но я застрял.

Я попробовал другой подход, прежде чем пытаться использовать NSUserDefault.

То, что я пытаюсь сохранить, это

* PlayerScore // NSInteger

* HighScore // NSInteger

* Уровень // NSInteger

* Время // int

*настройки кнопок на SFX и фоновой музыке

* Положение фоновой музыки, поэтому он возобновит работу с того места, где остановился

* сетка, являющаяся игровым полем, и кирпичи на нем (сетка 6x6 итакже является типом UIImageView * grid [] [], кирпичи на нем 35)

-(void)saveGameState {

NSLog(@"saveGameState");
NSLog(@"totalrubies %d", totalrubies);
NSLog(@"playerscore %d", playerscore);
NSLog(@"highscore %d", highscore);
NSLog(@"level %d", level);
NSLog(@"totalseconds %d", totalSeconds);

[[NSUserDefaults standardUserDefaults] setInteger:totalrubies forKey:kRubiesKey]; 
[[NSUserDefaults standardUserDefaults] setInteger:playerscore forKey:kPScoreKey];
[[NSUserDefaults standardUserDefaults] setInteger:highscore forKey:kHScoreKey];
[[NSUserDefaults standardUserDefaults] setInteger:level forKey:kLevelKey];
[[NSUserDefaults standardUserDefaults] setInteger:totalSeconds forKey:kTimeKey];
[[NSUserDefaults standardUserDefaults] synchronize];


for (int y = 0; y < BRICKHEIGHT; y++)
{
    for (int x = 0; x < BRICKWIDTH; x++) 
    {

        [[NSUserDefaults standardUserDefaults] setObject:grid[x][y] forKey:kGridKey];
        NSLog(@"grid[BRICKWIDTH][BRICKHEIGHT] %d", grid[x][y].tag);
    }
}

} ​​

Я тоже так пробовал

NSData *ImageData = UIImagePNGRepresentation (grid[x][y]); [NSUserDefaults standardUserDefaults] setObject:ImageData forKey:kGridKey];

но затем я получил предупреждение: несовместимые типы Objective C 'struct UIImageView *', ожидаемый 'struct UIImage *' при передаче аргумента 1 'UIImagePNGRepresentation' из отличного типа Objective C *

Мне удалось сохранить все, кроме последних 3 * в списке.Мне нужна помощь с теми, кто специально с сеткой, это prio 1.

Ответы [ 2 ]

1 голос
/ 16 июля 2011

Вы должны дать UIImagePNGRepresentation() UIImage в UIImageView, отсюда и это сообщение об ошибке.

Попробуйте:

UIImageView *imgView = grid[x][y];
NSData *ImageData = UIImagePNGRepresentation(imgView.image);
[NSUserDefaults standardUserDefaults] setObject:ImageData forKey:kGridKey];
0 голосов
/ 16 июля 2011

NSUserDefaults не очень хорошее решение для этого.Вы рассматривали CoreData или файловую систему?

Сохранение самих изображений кажется ненужным и расточительным.Все, что вам нужно сделать, это записать состояние игры - т.е. какой кирпич находится в какой позиции.Вы должны иметь возможность легко воссоздать вид из этих данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...