我有以下代码;
int days = [[SettingsUtils daysToRetainHistory] intValue];
[retainHistory setText:[NSString stringWithFormat:@"Days to retain History: %d", days]];
[daysToRetainHistory setValue:days animated:NO];
其中[SettingsUtils daysToRetainHistory]
如下;
+ (int) daysToRetainHistory {
return (int)[[NSUserDefaults standardUserDefaults] objectForKey:@"CaseBaseDaysToRetainHistory"];
}
我收到编译器警告Invalid receiver type 'int'
,因为我在intValue
上调用了int
,但除非我这样做,否则我似乎无法获得整数值并始终以内存地址,即98765432而不是9,它破坏了UILabel显示[retainHistory
]和UISlider [daysToRetainHistory
]值。
如何避免编译器警告并仍然在标签中获取我的整数值以及设置UISlider值所需的浮点值?
答案 0 :(得分:2)
这是因为你正在将一个内存地址转换为一个int值无效的int。而只需使用您想要的NSUserDefaults方法:
+ (NSInteger)daysToRetainHistory
{
return [[NSUserDefaults standardUserDefaults] integerForKey:@"CaseBaseDaysToRetainHistory"];
}
然后直接使用它:
NSInteger days = [SettingsUtils daysToRetainHistory];
您还应该使用相同的方法存储您的日期:
[[NSUserDefaults standardUserDefaults] setInteger:days forKey:@"CaseBaseDaysToRetainHistory"];
虽然如果设置NSNumber对象并且它实际上确实包含一个整数,那么它也可以正常工作。