2011-01-06 69 views
0

我有以下代碼;要求整數值不是內存地址,同時避免無效的接收器類型編譯器警告

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'因爲我呼籲intValueint但除非我做到這一點我似乎無法廉頗老整數值始終與內存地址即98765432,而不是9結束了這破壞UILabel顯示器和UISlider [daysToRetainHistory]值。

我該如何避免編譯器警告,並仍然在標籤中獲得我的整數值以及設置UISlider值所需的浮點值?

回答

2

這是因爲您正在將內存地址轉換爲int值無效的int值。相反,只是使用的方法從NSUserDefaults的希望:

+ (NSInteger)daysToRetainHistory 
{ 
    return [[NSUserDefaults standardUserDefaults] integerForKey:@"CaseBaseDaysToRetainHistory"]; 
} 

然後就直接使用它:

NSInteger days = [SettingsUtils daysToRetainHistory]; 

你也應該你的日子存儲用同樣的方法:

[[NSUserDefaults standardUserDefaults] setInteger:days forKey:@"CaseBaseDaysToRetainHistory"]; 

雖然如果你設置NSNumber對象,它實際上包含一個整數,這也可以很好地工作。

相關問題