2011-01-06 12 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"]; 
} 

私はintintValueを呼び出すが、私はこれを行う場合を除き、私は整数値を取得し、常にメモリアドレスすなわち98765432の代わりに9で終わるように見えることはできませんので、私は、コンパイラの警告Invalid receiver type 'int'を取得UILabelディスプレイ[retainHistory]とUISlider [daysToRetainHistory]の値を破棄します。

コンパイラの警告を回避するにはどうすればいいですか?UISliderの値を設定するために、ラベル内の整数値と必要な浮動小数点値を引き続き取得しますか?

答えて

2

int型の値が動作していないintにメモリアドレスをキャストしているからです。代わりに、ちょうどあなたがNSUserDefaultsから必要なメソッドを使用します。

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

そしてちょうどそれを直接使用します。ifものの

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

:また、同じ方法であなたの日を保存する必要があります

NSInteger days = [SettingsUtils daysToRetainHistory]; 

あなたはNSNumberオブジェクトを設定し、実際には正常に動作する整数を含んでいます。

関連する問題