2012-06-21 2 views
2

예를 들어 두 개의 문자열에 "$ 100"과 "$ 50"이 있으면 출력을 "$ 150"에 추가하려고합니다. 나는 일반적인 방법 (정수로 변환하고 추가)를 알고,하지만 난 많은 기능objective-c 문자열에있는 정수 추가하기

+6

* 일반적인 방법 *은 조작하기 쉬운 데이터 유형 (이 경우 정수)을 사용하고 프레젠테이션 중에 문자열로 변환하는 것입니다. 문자열을 사용하지 마십시오. – trojanfoe

답변

1
float result = [[fiftyBucks substringFromIndex:1] floatValue] + [[hundredBucks substringFromIndex:1] floatValue]; 

또는 NSScanner를 사용하여 호출하지 않는 짧은 방법을 찾고 있어요,하지만 조금 더 될 것입니다,하지만 더 신뢰성/안전 :

float fifty, hundred, result; 
[[NSScaner scannerWithString: fiftyBucks] scanFloat: &fifty]; 
[[NSScaner scannerWithString: hundredBucks] scanFloat: &hundred]; 
result = fifty + hundred; 
3

당신은의 NSNumber로 문자열을 구문 분석을 합계 한 다음 문자열로 다시 변환하는 NSNumberFormatter를 사용할 수 있습니다

NSString *strNum1 = "$100"; 
NSString *strNum2 = "$150"; 

NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
[f setNumberStyle:NSNumberFormatterCurrencyStyle]; 
NSNumber * myFirstNumber = [f numberFromString:strNum1]; 
NSNumber * mySecNumber = [f numberFromString:strNum2]; 

NSNumber *sum = [NSNumber numberWithFloat:([myFirstNumber floatValue] + [mySecNumber floatValue])]; 
NSString * strSum = [f stringFromNumber:sum]; 
0

CGfloat에 가격을 저장하는 편이 낫다고 생각합니다.

"$ 100"문자열이 프런트 엔드 작업이고 가격의 합계를 계산하는 것은 백 엔드 작업입니다. 이 둘은 분리되어야합니다.

가격을 CGFloat로 저장하면 수학을 간단히 수행 할 수 있습니다. 그리고 그 문자열을 보여주고 싶을 때, juz는 메소드를 구현합니다.

- (NSString *)priceLabel:(CGFloat) _price { 
    return [NSString stringWithFormat: @"$.1f", _price]; 
} 

또한 코드 작성시 프런트 엔드 도우미 모델을 만드는 것을 두려워하지 마십시오. 저는이 모든 종류의 작은 메소드를 클래스 메소드로서이 모델에 넣었습니다. 이 메소드를 재사용해야하는 곳이라면 간단히 모델을 임포트 할 수 있습니다.

+0

** CGFloat **는 핵심 그래픽 유형이므로 일반적인 ** float ** 대신에 사용하는 것이 잘못되었습니다. –

관련 문제