Objective c 需要整数值而不是内存地址,同时避免无效接收器类型编译器警告
我有以下代码Objective c 需要整数值而不是内存地址,同时避免无效接收器类型编译器警告,objective-c,int,compiler-warnings,Objective C,Int,Compiler Warnings,我有以下代码 int days = [[SettingsUtils daysToRetainHistory] intValue]; [retainHistory setText:[NSString stringWithFormat:@"Days to retain History: %d", days]]; [daysToRetainHistory setValue:days animated:NO]; 其中[SettingsUtils daysToRetainHistory]如下所示: +
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"];
}
我得到了编译器警告无效的接收器类型“int”
,因为我在int
上调用了intValue
,但除非我这样做,否则我似乎无法得到整数值,并且总是以内存地址(即98765432)而不是9结束,这会破坏UILabel显示[retainHistory
]和UISlider[daysToRetainHistory
]值
如何避免编译器警告,同时仍在标签中获取整数值和设置UISlider值所需的浮点值?这是因为您正在将内存地址强制转换为int,而int值不起作用。只需使用NSUserDefaults提供的方法即可:
+ (NSInteger)daysToRetainHistory
{
return [[NSUserDefaults standardUserDefaults] integerForKey:@"CaseBaseDaysToRetainHistory"];
}
然后直接使用它:
NSInteger days = [SettingsUtils daysToRetainHistory];
您还应使用相同的方法存储天数:
[[NSUserDefaults standardUserDefaults] setInteger:days forKey:@"CaseBaseDaysToRetainHistory"];
尽管如果您设置了NSNumber对象,并且它实际上包含一个整数,这也可以正常工作