2010-02-14 2 views
0

저는 UITextFields의 정수를 합산하여 UILabel에 게시하려고합니다.5 UITextFields의 정수를 Cocoa Touch의 UILabel에 추가하십시오.

이것은 시도한 코드이지만 올바르게 작동하지 않습니다. 라벨에 표시된 숫자는 이 아니며이 내 텍스트 필드의 합계입니다. 나는 또한 레이블 대신 텍스트 필드에 같은 결과로 게시하려고했습니다. 빌드시 오류나 경고가 없습니다.

int val = [textfield1.text intValue] 
val = val+[textfield2.text intValue]; 
val = val+[textfield3.text intValue]; 
val = val+[textfield4.text intValue]; 
val = val+[textfield5.text intValue]; 

NSString *labelStr = [[NSString alloc] initWithFormat:@"%i", val]; 

label.text = labelStr; 

코드에 문제가 있습니까? 대체 코드? 모든 답변에 감사드립니다!

+0

이전 질문의 중복 http://stackoverflow.com/questions/2256356 –

+2

OP가 코드를 제공함에 따라 복제본이 중복되지 않아 다른 하나가 정보가 충분하지 않아 닫혔습니다. – Mark

+0

그는 이전 질문에도 코드를 게시했습니다. (의견으로). 그는 또한 이전 의견을 무시한 것 같습니다. 그의 용어는 혼란 스럽다. Xcode는 프로그래밍 언어 나 프레임 워크가 아닌 IDE의 이름이다. –

답변

0

메모리 누출은 제외하고 코드가 다소 나을 것 같습니다. the memory management rules을 검토하고 누출을 수정해야합니다.

내 생각 엔 입력 한 숫자가 int 범위를 벗어나는 숫자와 합쳐지는 것 같습니다. 예를 들어, 5 필드 각각에 1000000000 (10 ** 9)을 입력하면 int이 32 비트 (현재, iPhone-OS 장치 포함) 인 모든 컴퓨터에서이를 제거 할 수 있습니다.

앱의 용도에 따라 5 개의 입력 필드를 간단하게 제한 할 수 있습니다. 어떤 의미를 갖는 가장 높은 값이 최대 값이 int 인 1/5 (5 필드의 경우 모두 동일한 캡이 있다고 가정 할 경우)이면 오버플로가 불가능합니다.

캡으로 문제가 해결되지 않으면 다른 유형을 사용해보십시오. 값이 음수가 아니어야하는 경우 부호없는 유형을 사용하십시오. 그렇지 않으면 long long 또는 부동 소수점 형식을 사용하거나 NSDecimalNumber 개체를 사용하십시오.

물론 내가 입력 한 숫자 또는 결과가 무엇인지 말하지 않았으므로 완전히 잘못 될 수 있습니다. 그것이 0이라면, 당신이 IB에 당신의 콘센트를 연결했는지 확인하십시오; 깜박하면 nil이 포함되어 있습니다. text을 요청하면 을 요청하면 nil을 반환하고 0을 반환하고 0 + 0 + 0 + 0 + 0 = 0을 반환합니다.