在我的应用程序中,我希望在某些时候保存NSUserDefaults中的“int”值,并且它向我发出警告:值不是“id”类型并且是“int”。如果我尝试插入NSString,我不会收到此警告。
以下是详细信息。
我写的代码:
int currentCategoryForUserDefaults = currentCategory; //"cuurentCategory" is an enum value.
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:currentCategoryForUserDefaults forKey:@"currentCategoryForUserDefaults"];
我得到的警告(第3行):
Semantic Issue : Incompatible integer to pointer conversion sending 'int' to parameter of type 'id'
任何?
答案 0 :(得分:4)
使用setInteger:forKey:代替setObject:forKey:
。整数不是对象,它是基本类型。
然后,您可以使用integerForKey:检索它。
另一种选择是将整数包装成NSNumber
对象。
答案 1 :(得分:0)
请尝试使用- (void)setInteger:(NSInteger)value forKey:(NSString *)defaultName
或将 int 值包装到 NSNumber 中,这正是调试器想要的。