2011-01-06 1 views
0

다음 코드가 있습니다.정수 값을 필요로하지 않습니다. 메모리 주소가 필요하지 않습니다. 잘못된 수신자 유형 컴파일러 경고

int days = [[SettingsUtils daysToRetainHistory] intValue]; 
[retainHistory setText:[NSString stringWithFormat:@"Days to retain History: %d", days]]; 
[daysToRetainHistory setValue:days animated:NO]; 

여기서, [SettingsUtils daysToRetainHistory]은 다음과 같다. 내가 intintValue를 호출하기 때문에

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

나는 컴파일러 경고 Invalid receiver type 'int'를 얻을 수 있지만이 작업을 수행하지 않는 한 나는 밖으로 정수 값을 얻을 항상 98,765,432 대신 9의 메모리 주소 예로 끝날 것 같지 수있는 UILabel 디스플레이 [retainHistory]와 UISlider [daysToRetainHistory] 값을 파멸시킵니다.

컴파일러 경고를 피하고 UISlider 값을 설정하는 데 필요한 float 값과 레이블에 정수 값을 가져 오는 방법은 무엇입니까?

답변

2

int 값이 작동하지 않는 int로 메모리 주소를 캐스팅하기 때문입니다. 대신 당신이 NSUserDefaults에서 원하는 방법을 사용하십시오

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

그럼 그냥 직접 사용하는 경우 비록

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

: 또한 같은 방법으로 일을 저장해야

NSInteger days = [SettingsUtils daysToRetainHistory]; 

NSNumber 객체를 설정하면 실제로 작동하는 정수가 포함됩니다.

관련 문제