NSUserDefault问题。保存/检索数据,包括UIImageView网格[] []
我试图在游戏中保存信息,但我卡住了。NSUserDefault问题。保存/检索数据,包括UIImageView网格[] []
在尝试使用NSUserDefault之前,我尝试了一种不同的方法。
我试图挽救是
* PlayerScore // NSInteger的
*高分// NSInteger的
*级别// NSInteger的
*时间// INT
* SFX和背景音乐上的按钮设置
*背景音乐位置,所以它会恢复它停止的地方
*网格是gamefield和它的砖(网格是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型“结构的UIImageView *”,预期“结构的UIImage *”通过从不同的Objective-C型“UIImagePNGRepresentation”的参数1时
我成功,我认为,救以外的所有最后3 *在列表中。我需要帮助那些特别与网格部分,这是prio 1.
你应该给UIImagePNGRepresentation()
UIImage
在UIImageView
,因此这个错误消息。
尝试:
UIImageView *imgView = grid[x][y];
NSData *ImageData = UIImagePNGRepresentation(imgView.image);
[NSUserDefaults standardUserDefaults] setObject:ImageData forKey:kGridKey];
NSUserDefaults
是不是真的为这个伟大的解决方案。你考虑过CoreData还是文件系统?
保存图像本身似乎不必要和浪费。你所要做的就是记录游戏的状态 - 即哪个砖位于哪个位置。您应该能够轻松地从该数据重新创建视图。
我先用CoreData尝试过,但从另一个论坛获得的信息表明,NSUserDefaults是比CoreData更好的解决方案。 – iphonedevonthemake
@Jim +1,确实如此 – 2011-07-16 12:46:30
好吗?我以为我做了,当我尝试这部分... NSData * ImageData = UIImagePNGRepresentation(grid [x] [y]); [NSUserDefaults standardUserDefaults] setObject:ImageData forKey:kGridKey]; – iphonedevonthemake
好的......我试试看...... – iphonedevonthemake
不错......警告消失了。我如何加载它?像这个网格[x] [y] = [[NSUserDefaults standardUserDefaults] ObjectforKey:kGridKey]; ? – iphonedevonthemake