我写了以下代码:
typedef enum {
kProductList,
kProductGrid,
kProductSingleView
} ProductViewType;
ProductViewType ViewType;
在我的视图更改方法中,我正在更改ViewType。当应用程序关闭时,我想将最后一个ViewType保存在UserDefauls中,这样当第一次加载时,我可以检查用户上次的ViewType并将其设置为默认值。
我写了以下代码:
[[NSUserDefaults standardUserDefaults] setObject:ViewType forKey:@"ProductViewType"];
但XCode显示警告:指向整数转换的指针不兼容。
任何解决方案?感谢。
答案 0 :(得分:18)
NSUserDefaults
存储对象而不是C数据类型。
没有试过这个,但你可能只能做出以下改变:
[[NSUserDefaults standardUserDefaults] setObject:@(ViewType) forKey:@"ProductViewType"];
@()
符号是[NSNumber numberWithInt:viewType]
的简写。
答案 1 :(得分:3)
如上所述here NSUserDefaults'setObject:forKey:
方法只接受对象。由于枚举类型不是对象,因此无法使用此方法进行设置。由于默认情况下枚举基本上是整数,因此您可以使用setInteger:forKey:
方法来存储您的值。
答案 2 :(得分:1)
因为ViewType
不是对象。
您可以先将ViewType放在NSValue
内。
NSValue *value = [NSValue value:&ViewType withObjCType:@encode(ProductViewType)];
[[NSUserDefaults standardUserDefaults] setObject:value forKey:@"ProductViewType"];
答案 3 :(得分:1)
枚举是整数,setObject需要对象!!!
将此枚举封装在对象中(可以是NSValue或eve自定义类)。然后将其写入UserDefaults。
或者如果您使用的是XCode4,
[[NSUserDefaults standardUserDefaults] setObject:@(ViewType) forKey:@"ProductViewType"];