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