2011-08-15 5 views
0

개체 C에 NSNumber를 올림하는 방법을 알고 있을까요? 이 sdArray 내부 NSNumber를 반올림하고 Object C에 일련의 숫자를 만드는 방법

for(int i=6; i>=0; i--) 
{ 
    DayOfDrinks *drinksOnDay = [appDelegate.drinksOnDayArray objectAtIndex:i]; 

    NSString * dayString= [NSDate stringForDisplayFromDateForChart:drinksOnDay.dateConsumed]; 

    [dayArray addObject:dayString];//X label for graph the day of drink. 

    drinksOnDay.isDetailViewHydrated = NO; 

    [drinksOnDay hydrateDetailViewData]; 

    NSNumber *sdNumber = drinksOnDay.standardDrinks; 
    [sdArray addObject: sdNumber];  
} 

이런 모든 숫자 2.1, 1.3, 4.7, 3.1, 4.8, 15.1, 7.2;

그래프 Y 축을 그릴 필요가 있으므로 NSNumber에서 표시되는 문자열이 필요합니다. 이 {@ "0", @ "2", @ "4", @ "6" , "8", @ "10", @ "12", @ "14", @ "16"}. 내가 0부터 시작해야하기 때문에 가장 큰 숫자 값을 결정해야합니다. 이 경우 그래프에 16을 표시하려면 15.1이됩니다. 정적 라벨링 대신 동적 라벨링을하고 싶습니다.

enter image description here 그래프에서 보았던 것은 동적이 아닌 정적 번호 매기기입니다.

중요한 정보를 놓치게되어 죄송합니다. 모든 의견

+2

경우 번호 (당신은 7 문자열의 입력이 – gsempe

+1

을 "반올림"쓸 때 의미 원하는 것을 얻을 수 있기 때문에 당신이 원하는 것을 이해하지 마십시오) 그리고 관계를 이해하지 못하는 9 개의 값을 출력하고 싶습니다. 누군가 첫 번째 배열에서 두 번째 배열로 이동하는 방법의 예를 게시하십시오. – Mark

+1

당신 NSNumbers 모두가 당신이 보여 NSStrings입니다하지 않습니다 난 당신이 또한 – Joe

답변

1

수정 사항이 더 적절합니다. 다음은 NSArray의 에있는 0부터 최대 값까지의 모든 짝수를 얻는 예제입니다 (모든 값이 양수라고 가정하면 최소 float 값을 찾아 음수 값을 지원하도록 변경할 수 있음).

NSArray *sdArray = [NSArray arrayWithObjects: 
        [NSNumber numberWithFloat:2.1], 
        [NSNumber numberWithFloat:1.3], 
        [NSNumber numberWithFloat:4.7], 
        [NSNumber numberWithFloat:3.1], 
        [NSNumber numberWithFloat:4.8], 
        [NSNumber numberWithFloat:15.1], 
        [NSNumber numberWithFloat:7.2], 
        nil]; 

//Get max value using KVC 
float fmax = [[sdArray valueForKeyPath:@"@max.floatValue"] floatValue]; 

//Ceiling the max value 
int imax = (int)ceilf(fmax); 

//Odd check to make even by checking right most bit 
imax = (imax & 0x1) ? imax + 1 : imax; 

NSMutableArray *array = [NSMutableArray arrayWithCapacity:(imax/2) + 1]; 
//Assuming all numbers are positive 
//(should probably just use unsigned int for imax and i) 
for(int i = 0; i <= imax; i +=2) 
{ 
    [array addObject:[NSString stringWithFormat:@"%d", i]]; 
} 

NSLog(@"%@", array); 
+0

감사합니다 조, 샘플 잘 나를 위해 일했습니다 :) – Desmond

2

체크 아웃 math.h에서 수학 함수를위한

덕분에 멋진 물건 당신은 아마 당신의 문자열을 구문 분석 할 필요가 귀하의 질문의 나머지 부분에 관해서는

extern double round (double); 
extern float roundf (float); 

처럼 거기에있다 숫자에 넣고, 원하는 액션을 수행하고 (반올림, 정렬 등) 문자열로 다시 넣습니다.

관련 문제