当前位置:  开发笔记 > IOS > 正文

可以在iPhone上使用NSUserDefaults保存整数数组吗?

如何解决《可以在iPhone上使用NSUserDefaults保存整数数组吗?》经验,为你挑选了2个好方法。

是否可以在iPhone上使用NSUserDefaults保存整数数组?我在我的.h文件中声明了一个数组:int playfield[9][11]它从文件中填充整数并确定游戏场地的布局.我希望能够有几个保存位置,用户可以保存他们的游戏.如果我做:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setObject: playfield forKey: @"slot1Save"];

我收到指针错误.如果可以保存整数数组,那么最好的方法是什么,然后再检索它?

提前致谢!



1> epatel..:

您可以使用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);



2> e.James..:

来自Apple的NSUserDefaults文档:

默认值必须是属性列表,即(或集合的实例组合)的实例:NSData,NSString,NSNumber,NSDate,NSArray或NSDictionary.

这就是你得到指针错误的原因.

您有多种选择(按推荐用法排序):

    使用NSArrayNSArrays到存储playField在您的应用程序

    将playField保持为数组int,但在保存之前用数字填充NSArray NSUserDefaults.

    编写自己的子类NSArchiver以在整数数组之间进行转换NSData.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有