use*_*293 8 iphone cocoa-touch objective-c
是否可以在iPhone上使用NSUserDefaults保存整数数组?我在我的.h文件中声明了一个数组:int playfield[9][11]它从文件中填充整数并确定游戏场地的布局.我希望能够有几个保存位置,用户可以保存他们的游戏.如果我做:
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject: playfield forKey: @"slot1Save"];
Run Code Online (Sandbox Code Playgroud)
我收到指针错误.如果可以保存整数数组,那么最好的方法是什么,然后再检索它?
提前致谢!
epa*_*tel 13
您可以使用NSData包装器保存和检索数组
即(没有错误处理)
保存
NSData *data = [NSData dataWithBytes:&playfield length:sizeof(playfield)];
[prefs setObject:data forKey:@"slot1Save"];
Run Code Online (Sandbox Code Playgroud)
加载
NSData *data = [prefs objectForKey:@"slot1Save"];
memcpy(&playfield, data.bytes, data.length);
Run Code Online (Sandbox Code Playgroud)
默认值必须是属性列表,即(或集合的实例组合)的实例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary.
这就是你得到指针错误的原因.
您有多种选择(按推荐用法排序):
NSArray的NSArrays到存储playField在您的应用程序
int,但在保存之前用数字填充NSArray NSUserDefaults.
NSArchiver以在整数数组之间进行转换NSData.